回答

收藏

从SELECT插入但更改一列?

技术问答 技术问答 475 人阅读 | 0 人回复 | 2023-09-14

想知道是否有一种方法可以将一行中的一行插入另一张表中,但一列除外?1 c; p9 }+ j4 D; a5 P
对于有限的列数,这当然很容易,但是当列数增加时,列出所有列会很麻烦。4 }4 f; ?. z7 J& r) @4 q
我在想以下方面的事情:7 }: u3 L7 ]2 z
Insert into table8 H  ]( a. O5 m8 l' d7 v
select * replace col1 with current date
9 d" c& r! {, m& B2 nfrom table; ~+ M0 Z' }8 R* c8 m; z
where yada yada yada0 Q4 \8 y& f+ s0 b. |
一种可能是复制一行并执行和更新,但是由于索引或其他原因,这不是一种选择。- ~$ N  d# K8 R* }7 ~
有任何想法吗?
/ ]3 u. W: o4 S  b' {; H编辑:这是DB2 v10,但问题出在纯出于好奇。只是想知道是否有可能…* ^( U; o& f1 v7 K
               
' g7 y! a0 o4 {3 b% E# I8 X解决方案:$ H* y8 k0 E$ ]( W0 `' ~
                & J- V1 r0 u9 P  t

; g# C8 @. t) r
* w5 }7 t/ g) `8 w8 H( C* i                使用Oracle
% k+ q  f% B5 c  `3 Y- T- B4 F* j; bDECLARE( M5 K4 W- w1 |
CURSOR CUR_D IS
; D% x* E! X3 e& T+ I  `  SELECT *6 w" {# w! y3 d5 L7 y0 [# X! e
  FROM TABLE) U) F5 v. S  O. Q8 }8 E
  WHERE id = some id;! ~4 c* q% V. H' d
ROW_D CUR_D%ROWTYPE;4 H( H# ?- M, t) p8 I9 b
BEGIN" \: ]+ e* N: c0 U# N2 K1 P: w" Y& ^
  OPEN CUR_D;: V( i* n8 F6 m# x1 `; [
  FETCH CUR_D INTO ROW_D;& ]2 ^8 _1 R1 ]! x( d' e; u+ U
  CLOSE CUR_D;% w+ r$ l6 T% ]% W
  ROW_D.column := 'some data';
8 j2 h0 N* J# B2 E6 q( U% L  INSERT INTO some table
- q' ^% ]9 w6 S$ k" k  VALUES ROW_D;
6 _0 U: I+ o5 J3 Z( M( pEND;
- x* a$ r, M9 k/ `! `* \/
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则