回答

收藏

从SELECT插入但更改一列?

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

想知道是否有一种方法可以将一行中的一行插入另一张表中,但一列除外?
/ \) E+ q9 d' E  J. b. {对于有限的列数,这当然很容易,但是当列数增加时,列出所有列会很麻烦。4 m7 a8 d7 G8 L$ p/ n( i7 T' F3 W6 N
我在想以下方面的事情:; a3 l! |# H. l) ]( b
Insert into table
. h) }/ K+ Q! @; R7 \( a  ~$ Kselect * replace col1 with current date
7 g" E, A5 e1 X' T2 Rfrom table% Q1 z. g/ F, X
where yada yada yada
" P; n/ @, w( ~$ \* A' [一种可能是复制一行并执行和更新,但是由于索引或其他原因,这不是一种选择。
: U" r1 |1 F  |4 c+ f. @有任何想法吗?
! ]* Y6 M; }$ k' m编辑:这是DB2 v10,但问题出在纯出于好奇。只是想知道是否有可能…
' Q- Q6 r% z/ v5 R/ `                5 S/ s5 s, g, B  Z
解决方案:
2 z0 V: Y4 R& d! j! H- A$ Y9 g: T& Z                8 V( {  r: {# _( ^; l  g$ \

4 X& f6 I; X, H0 {; P: j  K8 N1 M! K
                使用Oracle
; x- M, \7 |, i5 Q9 J5 jDECLARE  O: x4 J  e. n  ^8 @
CURSOR CUR_D IS
7 g" }7 n, {5 y1 e5 F! j  SELECT */ r( l: Y0 i6 F$ [1 ^
  FROM TABLE+ g+ ?1 z3 y5 o4 ^8 u5 E: X8 W% q
  WHERE id = some id;
; j+ }8 i+ G' V" d" u6 IROW_D CUR_D%ROWTYPE;2 {  o) `9 R. I- I
BEGIN
+ J5 _$ ?# P( Z  OPEN CUR_D;, i2 _9 h$ x8 Q- ^6 c8 J: K0 O2 c8 d
  FETCH CUR_D INTO ROW_D;1 `! p: }" b+ }3 ?* l6 _. l, p  o
  CLOSE CUR_D;" A# R; l4 f( d# N1 m
  ROW_D.column := 'some data';) z2 A; K0 g+ D) H
  INSERT INTO some table4 N  t0 F- P5 u! Z# U( G
  VALUES ROW_D;/ y, f: |# ]" a2 q$ J
END;0 p. S/ _2 ^2 m1 ^' O" B8 M8 m8 B3 Q
/
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则