使用此查询:
SELECT entry.ent_video_tipo, count(ent_video_tipo) as cnt
FROM entry
WHERE entry.ent_user='1'
GROUP BY ent_video_tipo
ORDER BY cnt DESC
我明白了:
ent_video_tipo|cnt
1 | 3
3 | 2
4 | 1
2 | 1
我收到了另一个问题:
SELECT * FROM meta
我得到了:
met_id|met_name|met_video_tipo
1 | bla | 4
8 | bla | 4
10 | bla | 2
11 | bla | 3
14 | bla | 1
21 | bla | 1
22 | bla | 1
41 | bla | 3
当我尝试此查询时
SELECT M.*
FROM meta M,
INNER JOIN
(SELECT entry.ent_video_tipo, count(ent_video_tipo) as cnt
FROM entry
WHERE entry.ent_user='1'
GROUP BY ent_video_tipo
ORDER BY cnt DESC) E
ON M.met_video_tipo = E.ent_video_tipo
ORDER BY E.cnt DESC
我明白了:
met_id|met_name|met_video_tipo
21 | bla | 1
14 | bla | 1
22 | bla | 1
41 | bla | 3
11 | bla | 3
10 | bla | 2
8 | bla | 4
1 | bla | 4
但这几乎应该归还。唯一不对的是,met_video_tipo
列应该是1,3,4,2
而不是1,3,2,4
。
无论如何还有这样的回归? ?
met_id|met_name|met_video_tipo
21 | bla | 1
14 | bla | 1
22 | bla | 1
41 | bla | 3
11 | bla | 3
8 | bla | 4
1 | bla | 4
10 | bla | 2
答案 0 :(得分:1)
也许您不需要创建另一个表。 试试这个:
select a.met_id,a.met_name,a.met_video_tipo from meta a,
(select met_video_tipo,count(*) as cnt from meta group by met_video_tipo) as x
where x.met_video_tipo=a.met_video_tipo order by x.cnt desc;
您也可以使用条目表而不是逐个查询。
答案 1 :(得分:1)
数据库根据您的要求正确排序,即E.CNT DESC。
met_video_tipo 4和2具有相同的计数1.由于没有为met_video_tipo定义order by,数据库可以根据各种条件更改met_video_tipo的顺序。
要按照您的意愿明确订购,请尝试ORDER by e.cnt DESC, m.met_video_tipo DESC