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

epggiuax  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(339)

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

select *
from x
where Q1 >= Q2

q1和q2都是选择计数值的查询。在q1中,我提取单个人的计数(例如),在q2中,我提取一个表,其中每个人的计数除以一个group by。

jqjz2hbq

jqjz2hbq1#

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

select *
from x
where Q1 >= Q2

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

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

uxh89sit2#

是的,这是合法的。代码如下所示:

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

子查询周围的括号是必需的。一 group by 在子查询中不合适,因为子查询可能返回多行。如果其中一个返回零行,则不会返回任何行,因为用于比较的值为 NULL .
也就是说,这将是一个不寻常的结构。我建议您用示例数据和所需结果问另一个问题,看看是否有其他方法来编写查询。

相关问题