1. 程式人生 > >使用group by查詢時order by無效問題解決

使用group by查詢時order by無效問題解決

第一種寫法:

    SELECT * FROM t_kaoqin 
WHERE p_id=1 AND TO_DAYS(t_kaoqin.kq_time)=TO_DAYS(NOW()) 
GROUP BY user_id 
ORDER BY kq_time DESC

    問題:發現先執行的group by,後執行order by,我要的結果是先排序再分組。

第二種寫法:

    SELECT temp.* FROM(
SELECT * FROM t_kaoqin 
WHERE p_id=1 AND TO_DAYS(t_kaoqin.kq_time)=TO_DAYS(NOW()) 
ORDER BY kq_time DESC

) AS temp GROUP BY temp.user_id 

  問題:本以為將排序寫成一個子查詢應該會先排序後分組,執行後發現問題同第一種寫法一樣。

第三種寫法(最終解決的寫法):

    SELECT temp.* FROM(
SELECT * FROM t_kaoqin 
WHERE p_id=1 AND TO_DAYS(t_kaoqin.kq_time)=TO_DAYS(NOW()) 
ORDER BY kq_time DESC LIMIT 0,10000

) AS temp GROUP BY temp.user_id 

    解決方式:在子查詢中新增LIMIT 0,10000則可使子查詢語句即排序執行完再進行分組。