回答

收藏

从SELECT插入但更改一列?

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

想知道是否有一种方法可以将一行中的一行插入另一张表中,但一列除外?
4 d, x; b7 p9 ^7 M8 @( T对于有限的列数,这当然很容易,但是当列数增加时,列出所有列会很麻烦。% `! ~# ?% h" ?  o# t
我在想以下方面的事情:& u" b# s5 P3 Q' _6 y5 M0 w6 ]9 b
Insert into table
( P9 Z1 ?5 W8 q6 T0 cselect * replace col1 with current date) o- O* [* I- u
from table
4 `) O/ P- q: {0 v! qwhere yada yada yada
# W7 P8 i# O; D; M一种可能是复制一行并执行和更新,但是由于索引或其他原因,这不是一种选择。5 M7 S' ~( e( @. I6 }- |
有任何想法吗?" H" j% H1 p9 x( W
编辑:这是DB2 v10,但问题出在纯出于好奇。只是想知道是否有可能…
- n3 c* D1 N4 G9 }# j                $ _$ d4 w( R  |3 P5 u$ n; I# j
解决方案:- ]- n# E% ?, I2 P1 l5 N4 n
               
, S1 o1 x7 e$ l$ m8 S
% ^1 d& d1 j# i' r+ `( `4 f5 E- Z+ S& w+ {) K3 J" V2 v8 H0 {
                使用Oracle
# a1 |! i0 Y/ B5 v( nDECLARE9 ?4 x  `; l9 H2 v$ g" b1 o
CURSOR CUR_D IS/ ?" b# P, y6 ^9 `! O
  SELECT *$ k7 G0 |/ L6 s# f3 y; }
  FROM TABLE
9 Z5 m9 C) ~4 E$ @1 N! F9 U, c  WHERE id = some id;
! i+ b: E: Z0 q/ Q4 hROW_D CUR_D%ROWTYPE;
* ^& ]3 R# }( p+ [) vBEGIN$ h% U' h% U  f! d9 _3 d* Y5 `- v, ~
  OPEN CUR_D;; G# I1 ~$ J0 D! a' i1 y5 R
  FETCH CUR_D INTO ROW_D;6 E2 {6 g; c0 c4 S9 Y! o
  CLOSE CUR_D;% v! s' C2 W" s, w2 O
  ROW_D.column := 'some data';
. g6 \3 q* k  N0 F1 Y  INSERT INTO some table+ F6 o% r0 u( q/ a6 l  y* T
  VALUES ROW_D;& h; z& }7 [3 `' k; B; j
END;
/ ^7 Z. d' t) r5 e; I7 ~7 D& V/
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则