2016-08-19 58 views
1

在生成結果後是否有辦法使用mySQL sql。在已經生成結果之後重新對sql進行排序

我有一個SQL獲取結果我想基本顯示,但我想要排序他們的方式取決於結果本身。爲了清晰起見,提供了一些僞代碼。

$sql = "SELECT * FROM post_info WHERE poster = 'login_user' OR replier = 'login_user'"; 

if ('login_user' == $row['poster']) { //sort by one column } 
else { //sort by a different column } 
+0

只是須藤代碼..我實際的代碼更復雜,但是如果我能想出如何做這樣的事情上面,我將能夠弄清楚,使之成爲我的實際代碼工作也.. –

+0

爲什麼取值後你必須做另一個排序嗎?它仍然更好地做一些排序時,在你的查詢時,只是追加你的自定義排序,然後再實際執行查詢,而不是在 – Ghost

+0

之後,基本上我有一個posterRead或replierRead列..我想先按「讀/不讀「,然後按日期..當我想要所有結果作爲同一組時,發現很難做到這一點..我對mysql命令很陌生。 –

回答

8

可排序有條件地與CASE語句的查詢中。

ORDER BY (CASE 
    WHEN poster = 'login_user' THEN col1 
    ELSE col2 
END) 
+0

感謝傢伙這工作的美麗,我學到了新的東西。 –

0
$sql = "SELECT *, if(poster='login_user', 1, 0) as idx FROM post_info WHERE poster = 'login_user' OR replier = 'login_user' order by idx desc"; 

$sql = "SELECT * FROM post_info WHERE poster = 'login_user' UNION SELECT * FROM post_info WHERE replier = 'login_user'";