首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从表格中选择常用标题?

如何从表格中选择常用标题?
EN

Stack Overflow用户
提问于 2019-04-21 16:49:58
回答 3查看 72关注 0票数 0

所以我正在创建一个电影网站,在那里你可以创建你自己的列表,在其中你可以添加你已经看过的电影,你计划看的电影等等。

在我的网站上,你有机会访问其他用户的个人资料,查看他们的列表,你可以查看你和被访问用户的列表中都有哪些电影。

因此,假设我有一个名为list的表,其中包含两列:username(已将电影添加到列表中的用户)和title (显然是电影的标题)

我在这个表中有一些记录,例如:

John|电影1

John|电影5

Patrick|电影1

帕特里克|电影2

John|电影3

Patrick|电影3

John|电影6

Patrick|电影7

John|电影2

在本例中,Movie1、Movie2和Movie3是帕特里克和约翰列表中最常见的电影

这是我尝试过的:

代码语言:javascript
复制
SELECT title FROM list WHERE 
(SELECT title FROM list WHERE username="Patrick")
=
(SELECT title FROM list WHERE username="John")

但是这不起作用,它返回以下错误: Subquery返回超过1行

如果有人能提供解决方案,我将不胜感激!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-21 16:59:05

您可以在同一个表上使用连接

代码语言:javascript
复制
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

or (以紧凑方式进行相同的查询)

代码语言:javascript
复制
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' 
票数 1
EN

Stack Overflow用户

发布于 2019-04-21 16:56:50

你可以对他们都喜欢的所有电影执行group by title,并且只获取那些having count(*) = 2为真的电影,这意味着他们都喜欢:

代码语言:javascript
复制
select title 
from tablename
where username in ('Patrick', 'John')
group by title
having count(*) = 2
票数 2
EN

Stack Overflow用户

发布于 2019-04-21 20:54:12

子查询基于,找到所有约翰电影标题,这是在帕特里克电影标题。demo on db-fiddle

代码语言:javascript
复制
SELECT title 
FROM demo 
WHERE username="Patrick" AND title IN
    (SELECT title 
     FROM demo 
     WHERE username="John");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55781264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档