我有下表:

-----------------
| Movie | Genre |
-----------------
| A     | Horror |
-----------------
| A     | Thiller |
-----------------
| B     | Comedy |
-----------------
| C     | Drama |
-----------------
| D     | Horror |
 ....

我想删除MoviesHorror。但我知道如果我只是说
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/

10-11 13:13