我有个问题。共有三个表: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_目标:
ID project_No
2976 1
3331 7
4049 7
5426 8
5915 3
6253 10
...
而我想看到的结果:
T_目标:
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 之间的语法错误。
请帮我一把。谢谢!