因此,我正在创建一个电影站点,您可以在其中创建自己的列表,在其中可以添加已经观看过的电影,打算观看的电影等。
在我的网站上,您有机会访问其他用户的个人资料,并查看他们的列表,并且可以查看哪些电影同时出现在您的电影中以及访问的用户列表中。
所以,假设我有一个名为list的表,该表有2列:username(将电影添加到他的列表中的用户)和title(显然是电影的标题)
我在此表中有一些记录,例如:
John | 电影1
John | 电影5
Patrick | Movie1
Patrick | Movie2
约翰 | 电影3
Patrick | Movie3
John | 电影6
Patrick | Movie7
约翰 | 电影2
在此示例中,Movie1,Movie2和Movie3是Patrick和John列表中的常见电影
这是我尝试过的:
SELECT title FROM list WHERE
(SELECT title FROM list WHERE username="Patrick")
=
(SELECT title FROM list WHERE username="John")
但这不起作用,它返回以下错误:子查询返回的行多于1
如果有人可以提供解决方案,我将不胜感激!
答案 0 :(得分:2)
您可以FlowLayout
观看他们都喜欢的所有电影,并且只获得group by title
是真实的电影,这意味着他们都喜欢:
having count(*) = 2
答案 1 :(得分:1)
您可以在同一张表上使用JOIN
SELECT l.title
FROM list l
INNER JOIN (
SELECT title
FROM list WHERE username='Patrick'
) t1 on t1.title = l.title
inner join (
SELECT title
FROM list
WHERE username='John'
) t2 on t2.title = l.title
或(以紧凑的方式进行相同的查询)
SELECT l.title
FROM list l
INNER JOIN list l1 on l.title = l1.title
AND l1.username='Patrick'
INNER JOIN list l2 on l.title = l2.title
AND l2.username='John'
答案 2 :(得分:1)
基于子查询,查找Patrick电影标题中的所有John电影标题。 demo on db-fiddle
SELECT title
FROM demo
WHERE username="Patrick" AND title IN
(SELECT title
FROM demo
WHERE username="John");