MySQL:哪里...在()

标签 mysql

SELECT * from movies
 INNER JOIN movie_genres ON movies.id_movie=movie_genres.fk_id_movie
 INNER JOIN genres ON movie_genres.fk_id_genre=genres.id_genre
WHERE genre_name IN ('action','crime');

movie_genres 只有 2 列(FK): - fk_id_movie - fk_id_genre

[电影]--------[电影类型]--------[类型]

这将返回一个OR结果:类型为“ Action ”或“犯罪”的任何电影;

是否可以用 AND 结果来写这个。仅返回同时具有 2 种类型的电影?

最佳答案

是的。一个好的方法是使用聚合和一个 having 子句:

SELECT *
from movies INNER JOIN
     movie_genres
     ON movies.id=id_movie
GROUP BY movies.id
HAVING sum(genre = '1') > 0 and
       sum(genre = '2') > 0 and
       sum(genre = '3') > 0;

关于MySQL:哪里...在(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828174/

相关文章:

php - 如何将php-mysql数据与jquery合并淡化数据

mysql - sql查询所有商品的价格历史记录

java - 使用 Hibernate Criteria API 进行日期比较

mysql - 客户端不支持服务器请求的认证协议(protocol);考虑升级MySQL客户端

mysql - 在mysql上进行模块结构并与MVC3连接

java - 哪个是处理大型 CSV 文件的最佳方式(Java、MySQL、MongoDB)

mysql - Postgres 中的 IF-ELSE

PHP MYSQL - 过滤和排序功能

mysql - 使用 mysql 查询返回所有子类别

php - MySQL 只更新表中的某些字段