2012-01-26 28 views
0

用戶名我一直在尋找,但我不能找到任何方式做到這一點。我試圖通過用戶名但具體的名字第一次訂購SQL結果,我不knwo這是可能的,這裏是代碼:排序與特定的名頭(PHP)

SELECT A.user_id, A.username, B.user_colour FROM likes AS A, users AS B 
      WHERE sta_id=$sta_id AND A.user_id = B.user_id 
      ORDER BY username ASC; 

,我想表明首先讓調用它的具體名稱「測試」。

回答

1

你可以把一個case語句爲有效地分配較低的值比其他一切具體名稱的ORDER BY。這是隨後由常規username爲了使其餘是字母ASC

SELECT A.user_id, A.username, B.user_colour FROM likes AS A, users AS B 
WHERE sta_id=$sta_id AND A.user_id = B.user_id 
ORDER BY 
CASE WHEN A.username = 'some specific name' THEN 0 ELSE 1 END, 
username ASC; 
+0

你用'ASC'排序組合'DESC'排序(1對0頂部) - 這本手冊中對具體建議;) –

+0

@Kolink已經固定。這是一個錯字。 –

+0

啊,你狙擊了我的評論:D很好。 –

1
ORDER BY IF(`username`='testing',0,1) ASC, `username` ASC 

應該這樣做很好。

+0

我在問,因爲我太懶惰RTFM了。在你的'ORDER BY'中使用'IF'是否會阻止MySQL使用索引進行排序? – rdlowrey

+0

啊......我真的不知道。你必須運行'EXPLAIN'才能發現。 –

+0

@rdlowrey,我很害怕,甚至是'='testing''可以防止MySQL的使用索引來排序。 –

1
ORDER BY (username='testing') DESC,username ASC