我遇到問題。有三個表格: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
...
而結果我想SE E:
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
錯誤消息: 「Msg 512,Level 16,State 1,Line 2 子查詢返回多個值。當子查詢遵循=,!=,<,< =,>,> =或當子查詢用作表達式時,這是不允許的。 的語句已終止「
然後我試着用VALUES語句而不是第一個SELECT和括號,但錯誤是一樣的
有一個類似的問題:。 mySQL query: How to insert with UNION? 但這個解決方案沒有按「T爲我工作,因爲它表明值,然後選擇之間的語法錯誤。
請給我一隻手。 謝謝!
我沒有看過你的大部分問題,但是我認爲現有查詢的正確的語法是:'插入T_target(ID,project_No)選擇ID,21從T1,其中ID不爲NULL工會選擇ID,21從T2其中ID不是NULL' – Bridge 2013-03-01 14:41:06