在以下查询的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中的列数发生变化,它将中断并且需要更新。
答案 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