【问题标题】:Easy query on 2 tables in SQL在 SQL 中轻松查询 2 个表
【发布时间】:2021-04-04 19:12:51
【问题描述】:

我有一个表 TABLE1,有两列:SSN 和日期。

我有另一个表 TABLE2,其中包含 SSN、姓名和姓氏。

我想查看与第一个表中出现次数最多的 SSN 关联的人的姓名和姓氏(具有 SSN 和日期的表)

我应该写哪个查询?

【问题讨论】:

  • 不要破坏你的问题。

标签: mysql sql database


【解决方案1】:

最快的方法大概是加入前聚合:

select *
from (select t1.ssn
      from table1 t1
      group by t1.ssn
      order by count(*) desc
      limit 1
     ) t1 left join
     table2 t2
     using (ssn)

【讨论】:

    【解决方案2】:

    试试这个。

    SELECT t1.ssn, t2.name, t2.surname, count(*) as vol
    FROM table1 t1
    LEFT JOIN table2 t1 on t1.ssn = t2.ssn
    GROUP BY 1
    ORDER BY count(*) DESC
    LIMIT 1
    

    【讨论】:

    • 是的,使用子查询查看@forpas 的答案。
    【解决方案3】:

    WHERE 子句中使用子查询,它返回在table1 中出现最多的SSN

    SELECT *
    FROM table2
    WHERE SSN = (SELECT SSN FROM table1 GROUP BY SSN ORDER BY COUNT(*) DESC LIMIT 1)
    

    使用SSN 上的索引(我假设它存在),这是获得结果的最快方法。

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 2015-12-09
      • 2013-09-27
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 2017-01-03
      • 2023-01-13
      • 1970-01-01
      相关资源
      最近更新 更多