忽略计数,零值不适用于子查询

时间:2016-04-30 23:13:53

标签: mysql sql

当我运行此查询时

select id , ( select count(*) .... ) as c
     from Foo
        where c > 0
        order by c desc

我得到了ERROR 1054 (42S22): Unknown column 'c' in 'where clause'

那么如何通过子查询忽略带零值的计数?

2 个答案:

答案 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子句中的别名来引用该列。