我有下面这 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/