如果Table_B中的數據不存在於Table_A中,我想從Table_B向Table_A插入column1的一些數據。例如,「頭痛」位於Table_B的第1列中,但不在表A的第1列中。謝謝。我寫了下面的SQL語句,但沒有奏效:從另一個表插入到一個表中
insert into Table_A(column1)
select column1
from Table_B
where column1 not in (select column1 from Table_A)
如果Table_B中的數據不存在於Table_A中,我想從Table_B向Table_A插入column1的一些數據。例如,「頭痛」位於Table_B的第1列中,但不在表A的第1列中。謝謝。我寫了下面的SQL語句,但沒有奏效:從另一個表插入到一個表中
insert into Table_A(column1)
select column1
from Table_B
where column1 not in (select column1 from Table_A)
試試這個:
INSERT INTO Table_A(column1)
SELECT B.column1
FROM Table_B B
LEFT JOIN Table_A A ON B.column1 = A.column1
WHERE A.column1 IS NULL
Insert into Table_A(column1)
select column1 from Table_B
left join Table_A on Table_B.column1 = Table_A.column1
where A.column1 is null
有了它很難說肯定沒有樣本數據,但我最好的猜測是您在table_A.Column1
中有NULL
的值。如果你確實有一個空值,查詢將相當於是這樣的:
SELECT Column1
FROM Table_B
WHERE Column1 NOT IN (1, 2, 3, NULL);
這是相當於:
SELECT Column1
FROM Table_B
WHERE Column1 <> 1
AND Column1 <> 2
AND Column1 <> 3
AND Column1 <> NULL;
由於Column1 <> NULL
是不正確的,查詢不返回任何結果。最語法類似的方式來達到預期的效果,你可能有NULL列使用NOT EXISTS
:
INSERT INTO Table_A(column1)
SELECT Column1
FROM Table_B AS B
WHERE NOT EXISTS (SELECT 1 FROM Table_A AS A WHERE A.Column1 = B.Column1);
但是,你可以用另外一種方法是:
INSERT INTO Table_A(column1)
SELECT Column1
FROM Table_B AS B
LEFT JOIN Table_A AS A
ON A.Column1 = B.Column1
WHERE A.Column1 IS NULL;
在這個由左加入到table_A
然後指出A.Column1
必須是NULL
,那麼您將刪除Table_A
中已有的任何記錄。
我更喜歡前者(NOT EXISTS
),因爲我覺得意圖更加清晰,但如果你use MySQL the latter will perform better
或者你也可以使用:關於使用MERGE語句
INSERT INTO Table_A(column1)
SELECT Column1
FROM Table_B AS B
WHERE B.Column1 IS NOT NULL
AND B.COlumn1 NOT IN (SELECT A.Column1 FROM Table_A AS A WHERE A.Column1 IS NOT NULL);
什麼?
MERGE INTO TABLE_A a
USING TABLE_B b ON (a.column1=b.column1)
WHEN NOT MATCHED THEN
INSERT (column1) VALUES (b.column1);
你的意思是「沒有工作」*是什麼意思?你能詳細說明嗎?你有錯誤嗎?另外,你使用的是什麼DBMS? – GarethD