我正在尝试使用以下语法插入表中:
INSERT INTO table1(
col1, col2, col3)
SELECT distinct
col1, col2, getDate()
FROM table2 WHERE NOT EXISTS(
SELECT 1 FROM table1, table2
WHERE ((table1.col1 = table2.col1) or (table1.col1 is null and table2.col1 is null))
AND ((table1.col2 = table2.col2) or (table1.col2 is null and table2.col2 is null)))
但是当我运行查询时,它会显示(0行受影响)。
NOT EXISTS语句中的SELECT语句返回我不想插入的正确行数。如果我尝试在没有WHERE NOT EXISTS语句的情况下插入表中,它会插入所有内容。我只想插入不在table1中的行。
答案 0 :(得分:1)
试试这个:
INSERT INTO table1(col1, col2, col3)
SELECT distinct col1, col2, getDate()
FROM table2 WHERE NOT EXISTS(
SELECT 1 FROM table1
WHERE ((table1.col1 = table2.col1) or (table1.col1 is null and table2.col1 is null))
AND ((table1.col2 = table2.col2) or (table1.col2 is null and table2.col2 is null)))
答案 1 :(得分:0)
您可以稍微优化此查询,但作为快速修复,您可以更改:
SELECT 1 FROM table1, table2
为:
SELECT 1 FROM table1
这会将外部table2绑定到子查询中。