当我运行此查询时
select id , ( select count(*) .... ) as c
from Foo
where c > 0
order by c desc
我得到了ERROR 1054 (42S22): Unknown column 'c' in 'where clause'
那么如何通过子查询忽略带零值的计数?
答案 0 :(得分:0)
试试这个:
select * from (
select id, (select count(*)... ) as c from Foo
) x
where c > 0
order by c desc
答案 1 :(得分:0)
As from MySQL site:
标准SQL不允许在WHERE子句中引用列别名。强制执行此限制是因为在评估WHERE子句时,可能尚未确定列值。
请参阅MySQL
任何方式:
您可以使用GROUP BY,ORDER BY或HAVING子句中的别名来引用该列。