回答

收藏

从SELECT插入但更改一列?

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

想知道是否有一种方法可以将一行中的一行插入另一张表中,但一列除外?
; m5 A3 i: L: B, j* ~: |对于有限的列数,这当然很容易,但是当列数增加时,列出所有列会很麻烦。
1 [2 C0 h4 i0 i# Y我在想以下方面的事情:
/ H4 N6 u8 x5 a3 o& z& n8 CInsert into table' h) w# |: i2 k+ m  Z( e) I
select * replace col1 with current date
5 u/ c3 I3 T! [) p. Kfrom table6 u  D$ }" o5 F3 ]
where yada yada yada3 G! b% T) p4 c+ w+ S) x  L
一种可能是复制一行并执行和更新,但是由于索引或其他原因,这不是一种选择。
: s* T7 F, E, L0 T/ d$ y有任何想法吗?  T1 X% ^4 c6 [3 J: X7 P, I0 t
编辑:这是DB2 v10,但问题出在纯出于好奇。只是想知道是否有可能…
8 _3 @1 Y1 K' ~               
1 ]% x5 ^7 E3 k  L; C! ~解决方案:0 Q+ _, Z  {& f! i( Z8 N! I
               
* m1 Y6 H: x1 \/ W8 r+ V
0 l7 Y; F+ A; K3 K
  X$ X  Z' r( K" a0 l; z# q( _                使用Oracle8 W, S- c) O' A6 m
DECLARE2 n$ J. ]* Q, W: x
CURSOR CUR_D IS1 [& \, ~3 O2 }2 N6 o: V
  SELECT *
* M9 l8 U; g/ Y4 {* F6 Z9 R1 C# {  FROM TABLE
3 W' o% l! M4 T* C0 t7 r- O" W: W  WHERE id = some id;
& D4 D! l& x4 F) f9 m) wROW_D CUR_D%ROWTYPE;
# e5 W- _( g! W5 l1 ]- cBEGIN5 k# N& N% A2 [' B1 T+ g" ?; A2 f
  OPEN CUR_D;
& i# z. @; I* k2 `; S* k  FETCH CUR_D INTO ROW_D;
; x! r7 Z; V0 v8 P& \  CLOSE CUR_D;& j/ A( V2 l8 i' j
  ROW_D.column := 'some data';& W# M& P1 r% E4 h6 P- x6 S
  INSERT INTO some table
" D, P; N' ^5 n9 F+ |  VALUES ROW_D;
% h: M& c; C0 S" \7 X( b, WEND;
) F& Z2 y0 }- o' V9 }. ?/
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则