簡體   English   中英

從mysql表獲取所有第二高的值

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

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