gpt4 book ai didi

sql - 插入并入

转载 作者:行者123 更新时间:2023-12-03 23:17:35 24 4
gpt4 key购买 nike

我有个问题。有三个表:T1,T2,T_target。 T1和T2表具有许多不同的列,但我只需要两者中的ID列。 T_target表具有一个ID列,当然还有另一个:project_No。

T1和T2中也出现了一些ID,但是我不想在它们之间创建重复项,如果一个ID同时出现在两个表中,则只需将其插入到T_target中一次,但是如果它已经在T_target中,则允许行动两次。另一个条件是,每个新插入的ID在“ project_No”列中的值都必须为21。因此,例如:

T1:

ID
2548
2566
2569
2843
2888
...


T2:

ID
2557
2566
2569
2700
2913
2994
3018
5426
...


T_target:

ID     project_No
2976 1
3331 7
4049 7
5426 8
5915 3
6253 10
...


我想看到的结果是:

T_target:

ID     project_No
2548 21
2557 21
2566 21
2569 21
2700 21
2843 21
2888 21
2913 21
2976 1
2994 21
2018 21
3331 7
4049 7
5426 8
5426 21
5915 3
6253 10
...


因此,我使用此代码进行了尝试(在这里使用“ NOT NULL”条件很重要,因为两个T_target列都是主键):

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), 21

select * from T_target


错误信息:
“消息512,级别16,状态1,第2行
子查询返回的值超过1。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。
该语句已终止。”

然后,我尝试使用VALUES语句而不是第一个SELECT和括号,但是错误是相同的。

还有一个类似的问题:
mySQL query: How to insert with UNION?
但是此解决方案对我不起作用,因为它指示VALUE和SELECT之间的语法错误。

拜托,帮帮我。
谢谢!

最佳答案

这应该做你需要的

INSERT INTO T_target
(ID,
project_No)
SELECT ID,
21
FROM T1
WHERE ID IS NOT NULL
UNION
SELECT ID,
21
FROM T2
WHERE ID IS NOT NULL

关于sql - 插入并入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15160298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com