2012-04-22 41 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; 

沒有,這不符合你的「單身聲明」的要求,但我很好奇,爲什麼你認爲這是一個良好的或有效的查詢的措施。