我有下表:
-----------------
| Movie | Genre |
-----------------
| A | Horror |
-----------------
| A | Thiller |
-----------------
| B | Comedy |
-----------------
| C | Drama |
-----------------
| D | Horror |
....
我想删除
Movies
的Horror
。但我知道如果我只是说delete * where genre='Horror'
这将是一个错误的查询,因为1个电影仍然-
A
-因为它也是一个Thiller
。| A | Thiller |
但我想摆脱
A
。我应该写什么问题?
我对sql和关系数据库理论还不太熟悉,但我想我们应该首先考虑表的交叉积、连接或smth。
数据库管理系统:mysql或oracle。
最佳答案
delete from movies
where movie in (select movie
from movies
where genre = 'Horror');
上述查询适用于Oracle(Postgres、SQL Server、DB2、Firebird、H2、HSQLDB等等),但不适用于MySQL。
对于mysql,需要将其重写为join:
delete movies
from movies
join movies m2 on movies.movie = m2.movie
where m2.genre = 'Horror';
关于mysql - 删除SQL数据库表中的多个条目。正确的查询?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19744399/