我正在尝试使用Python将数据插入SQLite数据库。
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK")
WHERE "UK" NOT EXISTS IN (SELECT LABEL FROM DATA_TABLE);
这个查询是从Python动态生成的,我正在检查在插入之前表中是否已经存在日期,并且它在SQLite数据库中不起作用。
得到此near "WHERE": syntax error
错误。
我做错了吗?
感谢您的帮助。
答案 0 :(得分:2)
我很确定INSERT
没有WHERE
子句(the documentation doesn't mention any)。你能做什么:
LABEL
INSERT OR FAIL
答案 1 :(得分:2)
它给你一个语法错误,因为它不是allowed syntax。从你的例子中我假设架构可能是:
create table data_table (uid integer primary key autoincrement.
label string);
在这种情况下primary key
暗示unique
。但是,既然你允许自动生成uid
,那么你不关心它的价值是什么,你只是不想要重复的label
,在这种情况下你真的关心label
是独特的,所以告诉它:
create table data_table (uid integer primary key autoincrement,
label string unique on conflict fail);
然后按预期工作:
sqlite> insert into data_table (label) values ("uk");
sqlite> insert into data_table (label) values ("uk");
Error: column label is not unique
sqlite> select * from data_table;
1|uk
顺便提一下,如果名称data_table
,uid
和label
不是用于此问题的示例名称,那么您应该使用更有意义的名称,因为这些名称非常缺乏信息。
答案 2 :(得分:1)
INSERT INTO DATA_TABLE(UID,LABEL) VALUES (NULL, "UK")
WHERE NOT EXISTS(SELECT 1 FROM DATA_TABLE WHERE LABEL="UK");
您可以使用此代替INSERT或FAIL。