2017-06-03 39 views
0

我是新來的sql,我試圖刪除兩行(sno 5和6)爲什麼在子句中刪除多行而不是運算符

它顯示如下。

+----+----------+--------------+ 
|sno | gender | linkin_sno | 
+----+----------+--------------+ 
|1 | Male | 1   | 
|2 | Male | 2   | 
|3 | Female | 3   | 
|4 | Female | 4   | 
|5 | Akash | 5   | 
|6 | Ashok | 6   | 
+----+----------+--------------+ 

我錯在我的性別table.so我嘗試使用查詢

我最初寫了一個查詢,它是刪除插入名稱:

delete from linkin_foreign where gender='Akash'and gender='Ashok'; 

然後,我用Google搜索,發現正確的查詢它是:

delete from linkin_foreign where gender in ('Akash','Ashok'); 

這裏是我的問題,爲什麼sql只接受「in」從句刪除兩行,因爲「和」運算符不允許刪除多行。在sql中有任何特定的規則,將你的知識分享給這個新手。

謝謝

回答

1

當你把它放在where子句中時,這意味着你想要刪除一個同時包含兩個名字Akash和Ashok作爲性別的行。與任何行不匹配。您可能需要在條款

+0

哦,非常感謝@SaurabhJuneja – Srini

1

SQL不需要in。您的原始查詢具有錯誤的邏輯。有了正確的邏輯,它的工作原理:

delete from linkin_foreign 
    where gender = 'Akash' or gender = 'Ashok'; 

然而,in是更好的方法:簡單的寫,不容易出錯,並且(在某些數據庫)更容易優化。

+0

中使用'或'或'in'它與您的查詢@GordonLinoff完美協作。併爲我的無知感到遺憾。 – Srini

相關問題