2012-09-12 37 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的部分,我想他希望所有組合都不存在。編輯 –

相關問題