2014-10-09 17 views
2

正如標題中所解釋的,我試圖從一個表中獲取前五個元組,在一些元組中相同。另外,如果第五個元組的值與同一個表中其他元組的值相同,我也需要顯示它們。作爲一個例子,假設我有具有以下值的表:SQL查詢:根據一個值獲取前五個元組,其值可能與某些元組相同

  • 人A:值12
  • 人員B:值12
  • 人C:值12
  • 人d:值15
  • 人E:值16
  • 人F:值17
  • 人G:值20

我需要顯示這一點:

  • 人G:值20
  • 人F:值17
  • 人E:值16
  • 人d:值15
  • 人C: Value 12
  • Person B:Value 12
  • Person A:Value 12

可以看出,儘管人員CG具有「前五位」值,但該表還包括人員A和B,因爲他們具有與人員C相同的值。此外,可以看到執行諸如

Select * from Person order by Value desc limit 5 

不會產生此表,因爲它會排除人員A和B.任何人都可以提供一些關於此事的幫助嗎?先謝謝你。

回答

1

我假設你是指MySQL而不是SQL Server(請編輯你的標籤)。如果是這樣,你可以使用子查詢與in獲得聯繫:

Select * 
From person 
Where value In (
    Select value 
    From person 
    Order By value Desc 
    Limit 5) 
Order by value Desc 

根據您想要的結果,您可能需要在子查詢中使用distinct。你的樣本數據有點不清楚。


或者,你可以使用一個join

Select p.* 
From person p 
    join (
    Select distinct value 
    From person 
    Order By value Desc 
    Limit 5) p2 on p.value = p2.value 
Order by p.value Desc 

(我用distinct這個例子以示區別。)

相關問題