我有个问题。 有三个表: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的查询:如何使用UNION插入? 但因为它表明值,然后选择之间的语法错误,这个解决方案并不为我工作。
请给我一只手。 谢谢!