为什么在子句中删除多行而不是操作符

时间:2017-06-03 13:25:20

标签: sql

我是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          |
+----+----------+--------------+

我在我的性别表中错误地插入了名称。所以我尝试使用查询删除

我最初写了一个查询,即:

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

然后我用谷歌搜索并找到了正确的查询,它是:

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

这是我的问题,为什么sql只接受#34;"删除两行的子句,其中"和"操作员不允许删除多行。在sql中有任何特定的规则,请将您的知识分享给这个新鲜的。

由于

2 个答案:

答案 0 :(得分:1)

SQL不需要in。您的原始查询具有错误的逻辑。使用正确的逻辑,它可以工作:

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

但是,in是更好的方法:更容易编写,更不容易出错,并且(在某些数据库中)更容易优化。

答案 1 :(得分:1)

当你放入where子句时,它意味着你要删除一个名字Akash和Ashok作为性别的行。哪个与任何行都不匹配。您需要使用'或'或者'在'在where子句