2012-09-12 20 views
1

EXISTS如何检查DEVID是否已经存在,然后做下面的查询插入,如果DEVID不存在:如果不是在SQLite的

INSERT into profiles (devID,alert) VALUES ("ff",1) ; 

PS:我已经看到this解决方案,SO ,但不知道如何修改我基于该解决方案的查询。

任何帮助表示赞赏。

回答

6
INSERT INTO profiles (devID, alert) 
SELECT 'ff', 1 
WHERE NOT EXISTS (SELECT 1 FROM profiles WHERE devID = 'ff'); 
2

试试这个:

INSERT OR IGNORE INTO profiles (devID,alert) VALUES ("ff",1) ; 

正如INSERT syntax描述:

enter image description here

+2

这需要一个唯一索引,你可能想提及它。 –

+0

我看不到在这里执行的复制'ff'的检查 – user1400538

+0

@ user1400538你需要在devID上有一个唯一的索引来使其工作,它基本上说“插入,如果它不与现有数据/索引冲突,否则忽视”。 –

1

根据你的链接:

INSERT INTO profiles (devID,alert) 
SELECT "ff", 1 
WHERE NOT EXISTS (SELECT 1 FROM profiles WHERE devID ="ff"); 
+0

这可能会为设备插入多行,如果它们具有不同的“alert”值,则表示不太正确。 –

+0

你是对的 - 我没有阅读只有存在Id的部分,我想他希望所有组合都不存在。编辑 –

相关问题