をtable_A.Column1
にNULL
という値があることを確認してください。 Column1 <> NULL
は事実ではないので、クエリは結果を返しません
SELECT Column1
FROM Table_B
WHERE Column1 <> 1
AND Column1 <> 2
AND Column1 <> 3
AND Column1 <> NULL;
:と同等です
SELECT Column1
FROM Table_B
WHERE Column1 NOT IN (1, 2, 3, NULL);
:あなたは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
に存在するレコードは削除されます。
私は意図がはるかに明確であると思いますが、もしあなたuse MySQL the latter will perform better
それとも、また使用することができますので、私は、(NOT EXISTS
)の元を好む:
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);
*「動作しませんでした」*とはどういう意味ですか?あなたは精緻化できますか?間違いましたか?また、どのDBMSを使用していますか? – GarethD