mysql - 从事件中选择不同的值

标签 mysql sql database database-design mysql-workbench

我有下面这 3 个表格,我想列出所有赢得金牌的运动员

Athletes
    +------------+-----------------+
    | athletesID | athletesName    |
    +------------+-----------------+
    | jg         | justin gatlin   |
    | ms         | maria sharapova |
    | ub         | usain bolt      |
    | vw         | venus williams  |
    +------------+-----------------+

events
    +---------+-----------+---------------------+
    | eventID | eventName | athletes_athletesID |
    +---------+-----------+---------------------+
    | ev1     | tennis    | ms                  |
    | ev1     | tennis    | vw                  |
    | ev2     | mens 100m | jg                  |
    | ev2     | mens 100m | ub                  |
    +---------+-----------+---------------------+
results

    +-----------+--------+----------------+----------------------------+
    | resultsID | Medal  | events_eventID | events_athletes_athletesID |
    +-----------+--------+----------------+----------------------------+
    | results1  | silver | ev1            | ms                         |
    | results1  | Gold   | ev1            | vw                         |
    | results2  | silver | ev2            | jg                         |
    | results2  | Gold   | ev2            | ub                         |
    +-----------+--------+----------------+----------------------------+

到目前为止,我已经使用了下面的代码,但这列出了所有银牌获得者都赢得了金牌

SELECT 
    athletesID, athletesName, medal
FROM
    myoly.athletes
        JOIN
    myoly.events ON athletes.athletesID = events.athletes_athletesID
        JOIN
    myoly.results ON myoly.events.eventID = myoly.results.events_eventID
WHERE
    medal = 'gold';

如何列出所有仅赢得金牌的运动员?

最佳答案

SELECT 
    a.athletesID, 
    a.athletesName, 
    r.medal
FROM results r
LEFT JOIN athletes a
ON a.athletesID  = r.events_athletes_athletesID 
WHERE r.medal = 'Gold';

关于mysql - 从事件中选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37820287/

相关文章:

php - foreach 和数组的错误

php - Node.js 中的通知

mysql - sum 函数不正确的值和本月尚未付款的列表

database - SQL 查询 - 日期范围无法正常工作

mysql - 使用最小列值创建左连接?

mysql - 如何提高MySQL DELETE查询性能

sql - TSQL OVER 子句 : COUNT(*) OVER (ORDER BY a)

mysql - 如何将多行合并为一行

java - 如何检查 double 是否为空?

php - MySQL Insert 是否允许不指定所有字段?