Re: [SQL ] 關於 再排序 與 效率 的問題

作者: vvrr (vvrr)   2013-11-25 05:25:07
※ 引述《rockchangnew (rock)》之銘言:
原本打算週五晚上回覆的,結果跑去趕別的東西,
到剛才要睡了才想到……
: : 2. 關於排序。
: : 上面執行的結果會是
: : uid sex COUNT(*)
: : A00001 0 20
: : A00003 1 15
: : A00004 0 3
: : A00008 1 2
: : 有100行,照著COUNT(*)排序。
: : 現在我希望這100行能照著 sex(性別) 排序,想到方法是類似:
: : SELECT * IN (
: : SELECT Table_log.uid, Table_sex.sex, COUNT(*)
: : FROM Table_log, Table_sex
: : WHERE (date_time >= 20131105 AND date_time <= 20131107 AND
: : Table_log.uid = Table_sex.uid)
: : GROUP by Table_log.uid
: : ORDER BY COUNT(*) DESC
: : LIMIT 100
: : }
: : ORDER BY sex;
: 為何不將
: order by count(*) desc 換成
: order by count(*) desc,sex
這樣的話,會變成「先排count,如果count相同的話再排sex」,
但是由於輸出的結果想變成男生女生分開,所以我希望的是「完全照sex排」。
後來的寫法是:
SELECT * FROM (
SELECT Table_log.uid, Table_sex.sex, COUNT(*)
FROM Table_log, Table_sex
WHERE (date_time >= 20131105 AND date_time <= 20131107 AND
Table_log.uid = Table_sex.uid)
GROUP by Table_log.uid
ORDER BY COUNT(*) DESC
LIMIT 100
} as _tmp
ORDER BY sex;
看起來是用了暫存表格的方法,暫時解決了。
因為資料很多,而且會一直成長,
如果有其他不用子查詢又不用建暫存表格的方法還請大家不吝告知。
謝謝有回文推文和水球我的各位 <(_ _)>

Links booklink

Contact Us: admin [ a t ] ucptt.com