回答

收藏

插入并入

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

我有个问题。有三个表:T1,T2,T_target。T1和T2表有很多不同的列,但我只需要两者中的列ID列。T_target表具有一个ID当然,还有另一个:列:project_No。
# i% U6 t' {0 V) b" a, b7 RT1和T有些也出现在二中ID,但如果是一个,我不想在它们之间创建重复项ID同时出现在两个表中,只需插入即可T_target一次,但如果已经在了T_target中间,允许两次行动。另一个条件是每个新插入的条件是ID在“9 r5 N! O: S5 o+ n; H( s% B1 \
project_No列中的值必须是21。因此,例如:
/ t) P/ r( I+ D6 uT1:
# \4 r* H, b5 E8 DID25482566256928432888...T2:: F1 w- _6 o7 q4 i- [
ID25572566256927002913299430185426...T_target:
$ K" B6 t$ S) d( E6 P, I9 QID     project_No2976  1331   74049 75426  85915  36253   1010...我想看的结果是:
+ @7 r5 W1 {, g3 y0 l, E. S" AT_target:
! ]& C0 K3 F, RID     project_No2548  212557  2125666   212700  2127700 212843  2128888 212888  212913  212976  212944  212018  213331   74049  75426  85426 85426   215915  362535     212566666665   ...因此,我尝试使用这个代码(在这里使用 NOT NULL因为两个条件很重要T_target列都是主键):
8 q' {* p* |5 x2 T* {insert into T_target (ID,project_No)  select (select ID  from T1 where ID is not NULL union  select ID  from T2 where ID is not NULL),21select * from T_target错误消息: “消息512,级别16,状态1,行2子查询返回的值大于1。当子查询遵循=,!=,,>
" d/ N5 \( v5 @2 t- ~=或者当子查询被用作表达式。这个句子已经终止了。
# w' F5 U1 Q. Z
然后,我试着用VALUES句子不是第一个SELECT括号,但错误是一样的。
9 |7 H- x2 s  {9 C8 j; g7 g谢谢!1 P; H1 \) G1 r  y
                                                               
7 c( X1 ?2 y# R( `    解决方案:                                                               
9 W: X! P3 l- L3 O- [2 r, M                                                                这应该是你需要的6 A6 z+ o4 d/ z) x: K8 v9 x% b  i
INSERT INTO T_target            (ID,            project_No)SELECT ID,      21FROM   T1WHERE  ID IS NOT NULLUNIONSELECT ID,      21FROM   T2WHERE  ID IS NOT NULL
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则