引用排序语句中“计数”列的正确方法

时间:2018-10-01 07:13:09

标签: mysql

在以下查询的sort语句中引用count(*)列的正确方法是什么?

select a.*, count(*) as 'Count'
from table_a a
join table_b b
    on a.id = b.id
where b.status = 1
order by ??

order by count(*)可以工作,但是MySQL是否会对所有记录进行两次计数?看来效率低下。

order by 2不起作用,因为它会将table_a中的所有列都考虑在内。

例如,我可以做order by 8,但是如果table_a中的列数发生变化,它将中断并且需要更新。

1 个答案:

答案 0 :(得分:3)

按以下顺序使用别名:

select a.*, count(*) as C
from table_a a join table_b b
on a.id = b.id
where b.status = 1
order by C