【问题标题】:SQL - search multiple columns from multiple tables?SQL - 从多个表中搜索多个列?
【发布时间】:2022-01-11 08:09:10
【问题描述】:

如何选择所有在“2022-01-02”之后有比赛(参加)的美国球队?

事件表。

home_team away_team date
AAA BBB 2022-01-01
AAA FFF 2022-01-01
BBB CCC 2022-01-02
AAA HHH 2022-01-05
RRR AAA 2022-01-05
QQQ BBB 2022-01-09

统计表。

team_name country match_played
AAA USA 49
BBB France 22
CCC Canada 32
DDD USA 25
EEE Italy 20
FFF Germany 90
GGG France 62
HHH USA 25

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    event表加入stat表两次,然后查看匹配日期:

    SELECT DISTINCT
        CASE s1.country WHEN 'USA'
            THEN e.home_team ELSE e.away_team END AS team
    FROM event e
    INNER JOIN stat s1 ON s1.team_name = e.home_team
    INNER JOIN stat s2 ON s2.team_name = e.away_team
    WHERE s1.country = 'USA' OR s2.country = 'USA' AND
          e.date > '2022-01-02';
    

    【讨论】:

      【解决方案2】:
          SELECT team_name FROM `tb2` WHERE `country` = 'USA' 
      AND team_name IN 
      (SELECT home_team FROM tb1 WHERE date > '2022-01-02'
      UNION
      SELECT away_team FROM tb1 WHERE date > '2022-01-02')
      

      首先,我们获取在“2022-01-02”之后有比赛(参加)的球队名称,然后仅选择美国球队。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-17
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        • 2018-11-03
        • 2017-02-15
        相关资源
        最近更新 更多