繁体   English   中英

SQL:SELECT,其中来自不同表的2列相同

[英]SQL: SELECT where 2 columns from different tables are the same

我需要使用包含有关(前)总统的信息的数据库。 我需要检查是否有具有相同爱好并在同一年结婚的总统。

因此,总裁可以在pres_hob表中拥有多个爱好。 结婚年份在marsyear列的pres_mar表中。

我试着在SQLite中的INNER JOIN表中,爱好和mar_year相等,除了pres_name之外。 这样,JOIN毫无用处,这是有道理的。 我对此有点陌生。

任何帮助表示赞赏

在此处输入图片说明

这是带有多个joins的一个选项:

select p1.pres_name, p2.pres_name, ph.hobby
from pres_mar p1
     join pres_mar p2 on p1.pres_name != p2.pres_name and p1.mar_year = p2.mar_year
     join pres_hob ph on p1.pres_name = ph.pres_name
     join pres_hob ph2 on p2.pres_name = ph2.pres_name and ph.hobby = ph2.hobby

根据您的预期结果, exists另一个使用方法:

select pm.pres_name, ph.hobby
from pres_mar pm 
     join pres_hob ph on pm.pres_name = ph.pres_name
where exists (
    select 1
    from pres_mar pm2
         join pres_hob ph2 on pm2.pres_name = ph2.pres_name
    where pm.pres_name != pm2.pres_name and
          ph.hobby = ph2.hobby
    )

这听起来像是一个糟糕的数据库架构,我假设它是出于学习目的,无论如何,您可以做类似的事情

SELECT
  h.name,
  h.hobby,
  m.year
FROM
  pres_hob h,
  pres_mar m
WHERE
  h.hobby = 'tennis'
AND
  m.year = 2016

对于每位拥有2016年结婚年和网球爱好的总统,这将返回1项记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM