[英]get all second highest values from a mysql table
我有一個包含兩個字段的表,如下所示:
name score
xyz 300
pqr 200
abc 300
mno 100
erp 200
yut 200
如何使用MySQL查詢從上表中檢索所有第二高分。 嘗試如下
SELECT name, MAX( `score` )
FROM score
WHERE score < (
SELECT MAX( score )
FROM score )
但它返回單個值。
預期結果 ,
name score
pqr 200
erp 200
yut 200
任何幫助請
您可以使用:
SELECT
`name`,
`score`
FROM
`score`
WHERE
`score`=(SELECT DISTINCT `score` FROM `score` ORDER BY `score` DESC LIMIT 1,1)
提示:用相同的名稱命名表及其列將在復雜的查詢中引起麻煩(對您而言,而不是對DBMS)
在sqlfiddle上創建了一個示例,它按照您的例外輸出顯示。
http://sqlfiddle.com/#!2/ce7a1/1
SELECT name, score
FROM score
WHERE score = (SELECT MAX(score) FROM score WHERE score < (SELECT MAX(score) FROM score))
如果第二高分和該第二高分的名稱用逗號分隔的列表很好,則可以使用以下單個查詢來完成
SELECT group_concat(name) as names,`score` FROM `score` group by `score`
ORDER BY `score` DESC LIMIT 1,1
簡單查詢
SELECT name, score
FROM score
WHERE score=(SELECT DISTINCT score FROM score ORDER BY score DESC LIMIT 1,1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.