[英]Insert into with union
我有個問題。 有三個表:T1,T2,T_target。 T1和T2表有許多不同的列,但我只需要兩列的ID列。 T_target表當然有一個ID列,另一個是:project_No。
有一些ID也出現在T1和T2中,但是我不想在它們之間創建重復項,如果兩個表中都出現了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
...
所以,我用這個代碼嘗試了它(因為兩個T_target列都是主鍵,所以在這里“NOT NULL”標准很重要):
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插入? 但是這個解決方案對我不起作用,因為它表示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
我認為你必須稍微修改一下,以避免在select語句中重復ID。
INSERT INTO T_target
(ID,
project_No)
SELECT ID, 21
FROM (
SELECT ID
FROM T1
WHERE ID IS NOT NULL
UNION
SELECT ID
FROM T2
WHERE ID IS NOT NULL
) A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.