SQL INSERT INTO如果记录不存在(不是来自第二个表)

时间:2017-11-30 15:49:57

标签: sql sql-server

通过Python,我从JSON请求中提取数据并插入数据库,但我想确保这些记录在插入之前尚不存在。

我之前曾经问过类似的问题,但我的情况有所不同,因为我的第二张桌子并没有查询。那么我该如何处理呢?

我尝试了什么,并且我得到了错误的语法错误,是

INSERT INTO table (col1, col2, col3) 
VALUES (val1, val2, val3) 
WHERE NOT EXISTS (select col1 FROM table WHERE col1 != val1)

有人能给我一个更好的方法来解决这个问题吗?谢谢。

2 个答案:

答案 0 :(得分:2)

IF NOT EXISTS(SELECT ...)
  INSERT ... VALUES ...

答案 1 :(得分:0)

您也可以这样做:

INSERT INTO table (col1, col2, col3) 
SELECT val1, val2, val3
WHERE NOT EXISTS (SELECT 0 FROM table WHERE col1 = val1)

请注意SELECT 如何从表格中进行选择。如果条件成立,它只返回一行(val1,val2,val3),如果不成立则返回零行。

顺便说一句,你可以更简洁地写出......

INSERT INTO table (col1, col2, col3) 
SELECT val1, val2, val3
WHERE val1 NOT IN (SELECT col1 FROM table)

...但请注意,在存在NULL的情况下,这是not the exact equivalent