如果不存在具有相同值的行,则插入行

insert row if one with equal value does not already exist

如果 table 尚未包含具有指定值的字段,我正在尝试插入 table。为此,我使用了这个命令:INSERT INTO zyprexa (NULL,'hello',0,0,0) SELECT date WHERE NOT EXISTS (SELECT 1 FROM zyprexa WHERE date='hello'); 所以它应该插入一个值为 null,'hello',0,0,0 的行。然后,如果它再次执行,它不应该做任何事情,因为已经有日期值为“hello”的行。但它给了我一个语法错误,即使是第一次也没有 运行。祝一切顺利。

正确的语法是:

INSERT INTO zyprexa (col1, col2, col3, col4, col5) 
SELECT NULL, 'hello', 0, 0, 0 
WHERE NOT EXISTS (SELECT 1 FROM zyprexa WHERE date = 'hello');

其中 col1col2col3col4col5 是将接收值的列的名称(例如 col2 应该是 date).

如果您希望 date 列在您的 table 中是唯一的,您应该这样定义它:

CREATE TABLE zyprexa  (
......
date TEXT UNIQUE,
......
);

然后您可以执行带有 INSERT OR IGNOREINSERT 语句,在这种情况下,如果您尝试插入带有 date 的新行(或任何其他定义为唯一的列) table 中已经存在,插入将失败(没有任何错误):

INSERT OR IGNORE INTO zyprexa (col1, col2, col3, col4, col5) 
VALUES (NULL, 'hello', 0, 0, 0);