我有 3 个 sql 表调用 category、movies、category_movies。 category 和 movies 表有多对多的关系。这就是我使用 category_movies 表的原因。这是表的结构...
Category : cat_id, cat_name, movies : mov_id, mov_name, category_movies : cat_id, mov_id
现在我动态地获得了 3 个类别 ID,现在我想单独选择电影的名称,其中属于 3 个 category_id 的类别名称已经获得。
这是我到目前为止尝试过的查询..
SELECT c.cat_name AS cn, m.mov_name AS mn, m.mov_id
FROM category AS c
INNER JOIN category_movies AS cm ON cm.cat_id = c.cat_id
INNER JOIN movies AS m ON m.mov_id = cs.mov_id
WHERE c.cat_id IN (2, 5, 7)
GROUP BY c.cat_name, m.mov_name, m.mov_id
HAVING COUNT(*) >= 3
但是现在可以正常工作了。有人可以告诉我这个查询有什么问题吗?
最佳答案
在此使用 IN
子句
SELECT..
FROM..
WHERE cat_id IN (2, 5, 7)
与
相同SELECT..
FROM..
WHERE cat_id = 2 OR
cat_id = 5 OR
cat_id = 7
另请注意,它是 INNER JOIN
而不是 INNOR JOIN
但我想,您想要执行RELATIONAL Division
(您想要搜索包含您想要查找的所有类别的电影)
SELECT c.cat_name, m.mov_name, m.mov_id
FROM category AS c
INNER JOIN movies AS m ON m.cat_id = c.cat_id
INNER JOIN category_movies AS cm ON cm.mov_id = m.mov_id
WHERE cat_id IN (2, 5, 7)
GROUP BY c.cat_name, m.mov_name, m.mov_id
HAVING COUNT(*) >= 3
关于mysql - 这个查询有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14279642/