我是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中有任何特定的规则,请将您的知识分享给这个新鲜的。
由于
答案 0 :(得分:1)
SQL不需要in
。您的原始查询具有错误的逻辑。使用正确的逻辑,它可以工作:
delete from linkin_foreign
where gender = 'Akash' or gender = 'Ashok';
但是,in
是更好的方法:更容易编写,更不容易出错,并且(在某些数据库中)更容易优化。
答案 1 :(得分:1)
当你放入where子句时,它意味着你要删除一个名字Akash和Ashok作为性别的行。哪个与任何行都不匹配。您需要使用'或'或者'在'在where子句