看板 Database 關於我們 聯絡資訊
※ 引述《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; 看起來是用了暫存表格的方法,暫時解決了。 因為資料很多,而且會一直成長, 如果有其他不用子查詢又不用建暫存表格的方法還請大家不吝告知。 謝謝有回文推文和水球我的各位 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 27.147.25.35