2012-04-22 40 views
-1

这会返回Table & Table2中行数的复合,但我想只返回Table2的计数,最好在ONE select语句中返回。多计数采用加盟?

SELECT Table.Name, Count(Table2.Active) FROM Table 
LEFT JOIN Table2 ON Table2.Active = 1 

建议?

+3

您的加入没有意义 - 它不是传统意义上的连接记录,它创造了未经过滤的*笛卡尔乘积*。 – dasblinkenlight 2012-04-22 02:47:48

回答

1

SELECT子句中的查询:

SELECT Table.Name, (SELECT Count(Active) FROM Table2) 
FROM Table 
LEFT JOIN Table2 ON Table2.Active = 1 

我没有改变你的表“加盟”,但它没有任何意义。

+0

Downvoter,照顾评论? – gdoron 2012-04-22 03:50:23

2

为什么要拉第二个表的计数一次,在第一个表中的每一行?这是大大效率低下。好多做:

DECLARE @c INT; 
SELECT @c = COUNT(*) FROM dbo.Table2; 
SELECT Name, @c FROM dbo.Table; 

没有,这不符合你的“单身声明”的要求,但我很好奇,为什么你认为这是一个良好的或有效的查询的措施。