2016-01-01 63 views
1

我想獲得與國家相同行數據的第一行顯示的行(有一行命名爲國家)。例如,如果有5個結果,其中2個具有「英格蘭」國家,他們應該排在第一位。我試過MySQL - 列表結果首先按相同的值排序?

$mycountry = "england"; 
mysql_query("SELECT * FROM members where basresvar='yes' ORDER BY country DESC limit 10") 

但它不按照我的意願對結果進行排序。什麼是正確的方法來做到這一點?

回答

5

使用

ORDER BY country = "England" DESC, country 

當比較結果爲真,則該值爲1;當它爲假時,值爲0。所以當你按照這個比較順序排列的時候,這個國家等於英格蘭的那些排在第一位。

添加第二個排序條件使所有其餘國家按照英格蘭字母順序排序。

+0

好奇;這個簡短的語法類似於fthiella的答案嗎?看起來是這麼回事。 (有趣)。 –

+2

是的,它非常相似,它只是利用了MySQL將數字表示爲布爾值的事實,所以您不必使用CASE來拼出它。 – Barmar

+0

最明智的答案。一個問題,如果我只是想先排序相同的國家,只使用ORDER BY country =「England」DESC將完成這項工作,對嗎? – user198989

5

你可以這樣寫查詢:

select * 
from 
    members 
where 
    basresvar='yes' 
order by 
    case when country='england' then 1 else 2 end 
limit 10 

case...when語句將返回1當國家=「英格蘭」和2否則的話,因爲我們被這句話訂購此將把具有行國家='英格蘭'在頂部,其他人在底部。

+1

你可能會解釋什麼「案例」/它是如何工作的......但很好的答案! –