MySQL同一表上的多个子查询
我得到了一个表格投票,表明我是否有用户投票给了特定的电影。它还向我显示了一个用户投了多少电影票MySQL同一表上的多个子查询,mysql,sql,Mysql,Sql,我得到了一个表格投票,表明我是否有用户投票给了特定的电影。它还向我显示了一个用户投了多少电影票 id_film | id_user | voting ---------------------------- 1 | 1 | 7 1 | 33 | 5 3 | 1 | 9 4 | 7 | 7 4 | 2 | 8 4 | 1
id_film | id_user | voting
----------------------------
1 | 1 | 7
1 | 33 | 5
3 | 1 | 9
4 | 7 | 7
4 | 2 | 8
4 | 1 | 6
6 | 1 | 6
... | ... | ...
我想通过以下方式获得与id_用户相关的id_电影列表:
从特定id用户处获取所有id电影,如
从id\U user=1的投票中选择id\U胶片
抓取每个相关的id\u用户
从id_film中的id_film中选择DISTINCT v.user
然后从上一次查询的用户列表中选择id_film's FROM vows v WHERE user,但第一次查询的id_film's除外
这是我第一次尝试:
SELECT id_film, film.title, film.originaltitle, COUNT(*)
FROM votes v
INNER JOIN film ON v.id_film = film.id
WHERE user IN
(
SELECT DISTINCT v.user
FROM votes v
WHERE id_film IN
(
SELECT id_film
FROM votes v
WHERE user = 1
)
)
AND
id_film NOT IN
(
SELECT id_film
FROM votes v
WHERE user = 1
)
GROUP BY id_film
它不起作用。MySQL花费的时间太长,我重新启动了XAMPP
所以我尝试了另一次选择,这次是使用连接:
也不起作用,但当我尝试它没有在条件不在最后它的工作!花了大约一小时。第13节:-
这是工作查询
SELECT DISTINCT v2.id_film AS v2Film
FROM votes v
LEFT OUTER JOIN votes v1 ON v1.id_film = v.id_film
LEFT OUTER JOIN votes v2 ON v1.user = v2.user
WHERE v.user = 1
AND v1.user != 1
有输出
v2Film
---------
1
13
14
58
4
...
但这个查询并没有排除第一个查询中的id_film。
因为我知道用户1已经投了id_film 1的票
那么,我的逻辑完全错了吗?或者我的代码太复杂了吗?那么,投票给你的同一部电影的所有电影的列表?没错。如果有人也投了你投过票的电影,请展示他投过票的所有其他电影。粘贴所有表格和预期的O/P。这样,我们可以帮助你实现你的结果。
v2Film
---------
1
13
14
58
4
...