通过子查询面对where子句中的两个计数

时间:2018-06-04 15:56:29

标签: mysql sql

是否合法编写一个如下结构的查询:

select *
from x
where Q1 >= Q2

Q1和Q2都是选择计数值的查询。在Q1中我提取单个人的计数(例如),在Q2中我提取一个表,其中每个人的计数(通过分组)。

2 个答案:

答案 0 :(得分:0)

  

是否合法编写一个如下结构的查询:

select *
from x
where Q1 >= Q2

是的,只要您的查询都是标量查询(可能是相关的)

SELECT *
FROM x
WHERE (subquery1) >= (subquery2)

答案 1 :(得分:0)

是的,这是合法的。代码看起来像:

select x.*
from x
where (select count(. . .) from . . .) >= (select count( . . . ) from . . . );

子查询周围的括号是必要的。 group by 在子查询中是合适的,因为子查询可以返回多行。如果要么返回零行,那么将不返回任何行,因为用于比较的值是NULL

那就是说,这将是一个不寻常的结构。我建议您使用示例数据和所需结果询问另一个问题,看看是否有其他方法来编写查询。