我试图返回只有79行的“conm”。
我的问题是:
SELECT *
FROM combinedata1
WHERE EXISTS (
SELECT conm, COUNT(conm) AS 'Number of Rows'
FROM combinedata1
GROUP BY conm
HAVING COUNT(conm) = 79
)
ORDER BY conm ASC
显然,这是返回几乎所有的东西,忽略了 conm
有79排。
有人能解释一下吗?
谢谢。
4条答案
按热度按时间ctzwtxfj1#
你应该有
where
内部exists
如下所示oalqel3c2#
首先,您的查询将返回所有内容,因为这就是
EXISTS
工作。子查询与外部查询不相关。因此,要么返回所有行(如果子查询返回任何行),要么不返回任何行。你可以用一个相关的子查询来解决这个问题。但是,窗口函数的查询速度更快、更简单:
bq3bfh9z3#
我发现用标量子查询来表示比用标量子查询更简单
exists
:子查询只计算有多少行具有相同的
conm
可以在表中找到:它返回一个标量值(计数),您可以直接对其进行筛选。此查询将利用上的索引conm
.您还可以使用窗口功能:
sqougxex4#