如果不存在具有相同值的行,则插入行
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');
其中 col1
、col2
、col3
、col4
、col5
是将接收值的列的名称(例如 col2
应该是 date
).
如果您希望 date
列在您的 table 中是唯一的,您应该这样定义它:
CREATE TABLE zyprexa (
......
date TEXT UNIQUE,
......
);
然后您可以执行带有 INSERT OR IGNORE
的 INSERT
语句,在这种情况下,如果您尝试插入带有 date
的新行(或任何其他定义为唯一的列) table 中已经存在,插入将失败(没有任何错误):
INSERT OR IGNORE INTO zyprexa (col1, col2, col3, col4, col5)
VALUES (NULL, 'hello', 0, 0, 0);
如果 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');
其中 col1
、col2
、col3
、col4
、col5
是将接收值的列的名称(例如 col2
应该是 date
).
如果您希望 date
列在您的 table 中是唯一的,您应该这样定义它:
CREATE TABLE zyprexa (
......
date TEXT UNIQUE,
......
);
然后您可以执行带有 INSERT OR IGNORE
的 INSERT
语句,在这种情况下,如果您尝试插入带有 date
的新行(或任何其他定义为唯一的列) table 中已经存在,插入将失败(没有任何错误):
INSERT OR IGNORE INTO zyprexa (col1, col2, col3, col4, col5)
VALUES (NULL, 'hello', 0, 0, 0);