[英]SELECT Highest value, or values if top value is shared
我有一個查詢,該查詢返回退役次數最多的跑步者:
SELECT runnerName, COUNT(runner) Retired
FROM `lapInfo` A JOIN `runner` B
ON A.lapInfoRunnerNo = B.runnerNo
WHERE `lapInfoRetired`=1
GROUP BY runnerName
ORDER BY COUNT(lapInfoRunnerNo) DESC
LIMIT 1;
目前,如果2個跑步者都退休了1次,並且沒有其他跑步者退役,我希望查詢返回這兩個跑步者,因為他們都已經退休了最多。 我嘗試使用MAX()而不是LIMIT,但它仍然只返回一個值。
我正在使用MySQL。
謝謝
您可以在子查詢中獲得最大退休人數,然后將其進行比較以獲取具有最大退休人數的所有跑步者
SELECT runnerName, runnerno
from runner r
join lapinfo l
on r.runnerno = l.lapinfoRunnerNo
group by runnerName
having sum(lapinfoRetired=1) =(
SELECT SUM(lapInfoRetired=1) as TotalRetired
FROM lapInfo
GROUP BY lapInfoRunnerNo
ORDER BY SUM(lapInfoRetired=1) desc
LIMIT 1 )
如果您不介意將名稱作為逗號分隔的列表,則可以執行以下操作:
SELECT GROUP_CONCAT(runnerName), Retired
FROM (SELECT runnerName, COUNT(runner) as Retired
FROM `lapInfo` A JOIN
`runner` B
ON A.lapInfoRunnerNo = B.runnerNo
WHERE `lapInfoRetired`=1
GROUP BY runnerName
) r
GROUP BY Retired
ORDER BY Retired DESC
LIMIT 1;
順便說一句,使用表別名是個好主意。 但是當它們是表名的縮寫時更好。 我建議li
為lapinfo
和r
為runner
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.