2016-01-26 100 views
1

什麼是錯的語法如下:無法刪除使用IN

DELETE FROM customer WHERE id IN ('1,3') 

Customer表:

enter image description here

它僅刪除一行ID = 1。我期待空表。如果我離開那裏只有一個ID = 3行,它說,刪除的記錄:0

回答

6

無需'各地值:

DELETE FROM customer WHERE id IN (1,3); 
+0

嗯,我已經看到了很多例子,但是當你指向這裏的時候,我看不到這些單引號'''圍繞我的代碼。非常感謝。現在,它按預期工作。 – soonic

0

你並不需要使用左右數單引號字段。您應該使用字符值附近的單引號。

2

您正在查找一個具有三個字符的字符串值:'1,3',而不是兩個數字值。

如果您構建查詢,那麼您應該嘗試使用正確的in列表構造它。在某些情況下,你可能會發現更方便地使用find_in_set()

DELETE FROM customer WHERE find_in_set(id, '1,3') > 0 

但是,這不能使用索引,所以lad2025是一個更好的通用解決方案。

+1

如果應該有字符串'1,3',如何刪除行'id = 1'?提到你的答案,我希望刪除第一行時,我只給出了'so'1'' – soonic

+1

@soonic。 。 。因爲它使用靜音轉換將字符串轉換爲整數。領先的整數被使用,所以'1,3' - > 1. –

+0

好的,我現在明白了。 – soonic