作者vvrr (vvrr)
看板Database
标题Re: [SQL ] 关於 再排序 与 效率 的问题
时间Mon Nov 25 05:25:07 2013
※ 引述《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