簡體   English   中英

SELECT最高值,如果共享最高值則返回值

[英]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。

謝謝

您可以在子查詢中獲得最大退休人數,然后將其進行比較以獲取具有最大退休人數的所有跑步者

SQL Fiddle

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;

順便說一句,使用表別名是個好主意。 但是當它們是表名的縮寫時更好。 我建議lilapinforrunner

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM