0

我可以运行查询:

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

并得到我想要的结果。如果没有,有没有办法做同样的事情而不必做 2 次查询?

4

4 回答 4

5
SELECT id, COUNT(id) FROM tableA a WHERE id < 5 GROUP BY id HAVING a.value < a.id
于 2009-06-05T19:03:02.787 回答
1

尝试

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
于 2009-06-05T19:06:55.710 回答
0

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

此外,它会比您可以将其作为单个选择语句来执行要慢得多。

于 2009-06-05T19:03:10.103 回答
0

您能否举例说明您要实现的输出 - 并让我们知道什么类型的数据库服务器(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
于 2009-06-05T19:11:24.610 回答