在MySQL where子句中使用生成的列

在MySQL where子句中使用生成的列,mysql,where-clause,Mysql,Where Clause,如果我有疑问,例如: select column1, ( select count(*) from table2 ) as some_count from table1 where column1 = 'foo' 我可以在where子句中使用column1,但是如果我尝试添加 and some_count > 0 然后我得到一个错误,some\u count不存在。我如何在where子句中使用它?目前,唯一的方法是使用派生表: SELECT x.* FROM (select

如果我有疑问,例如:

select column1, (
    select count(*) from table2
) as some_count
from table1
where column1 = 'foo'
我可以在where子句中使用
column1
,但是如果我尝试添加

and some_count > 0

然后我得到一个错误,
some\u count
不存在。我如何在where子句中使用它?

目前,唯一的方法是使用派生表:

SELECT x.*
  FROM (select column1, 
               (select count(*) from table2) as some_count
          from table1
         where column1 = 'foo') x
 WHERE x.some_count > 0
您是否意识到,如果没有相关性,
某些计数将为返回的每一行返回相同的值?

使用


是的,这只是一个简单的例子。但我从未想过(或知道如何)使用派生表。我将给它一个tryMySQL&sqlserver支持列别名,在groupby&HAVING中引用,但Oracle没有。但是,SQL Server会抛出错误,因为这两个列都没有包装在聚合中,也没有在GROUPBY子句中提到。只有在MySQL和SQLite上,这个查询才有效,+1这太完美了,这是针对wordpress站点的,所以它运行的是MySQL,尽管我很高兴看到oracle和sql server的缺陷
select column1, (
    select count(*) from table2
) as some_count
from table1
HAVING some_count > 0