你能在另一个查询中进行计数查询并使用结果吗?

时间:2009-06-05 18:59:45

标签: sql join count

我可以运行查询:

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

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

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分: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

答案 2 :(得分:0)

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

此外,它会比你作为单个选择语句做得慢很多。

答案 3 :(得分: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