Sql 您可以在另一个查询中执行计数查询并使用结果吗?

Sql 您可以在另一个查询中执行计数查询并使用结果吗?,sql,join,count,Sql,Join,Count,我可以运行查询吗: Select id, ( select count(*) from tableA as a where a.value < a.id ) from tableA as a where id < 5 得到我想要的结果。如果没有,是否有一种方法可以在不进行两次查询的情况下执行相同的操作?您可以,但您可能需要修复别名,因为它可能无法按您的方式工作 SELECT id, COUNT(id) FROM tableA a WHERE id < 5 GROU

我可以运行查询吗:

Select id, (
    select count(*) from tableA as a where a.value < a.id
) 
from tableA as a where id < 5 

得到我想要的结果。如果没有,是否有一种方法可以在不进行两次查询的情况下执行相同的操作?

您可以,但您可能需要修复别名,因为它可能无法按您的方式工作

SELECT id, COUNT(id) FROM tableA a WHERE id < 5 GROUP BY id HAVING a.value < a.id

此外,它将比作为单个select语句执行要慢得多。

可以,但可能需要修复别名,因为它可能无法按您的方式工作

而且,如果您可以将它作为一个select语句来执行,那么它的速度会慢很多。

试试看

Select a.id, mycount 
from tableA as a 
join  
(select a1.id, count(*)  as mycount from tableA as a1 where a.value < a.id) b 
   on a.id = b.id
where a.id < 5
试一试


你能举一个例子说明你想要实现什么样的输出,并让我们知道什么类型的数据库服务器ms、mysql、oracle吗?。我的想法如下所示,但具体语法可能因服务器类型而异:

SELECT  id, COUNT(CASE WHEN a.value < a.id THEN a.id ELSE NULL END) AS count
FROM    tableA AS a
GROUP BY id

你能举一个例子说明你想要实现什么样的输出,并让我们知道什么类型的数据库服务器ms、mysql、oracle吗?。我的想法如下所示,但具体语法可能因服务器类型而异:

SELECT  id, COUNT(CASE WHEN a.value < a.id THEN a.id ELSE NULL END) AS count
FROM    tableA AS a
GROUP BY id