Sql 使用联接在一个Select语句中进行多个计数?

Sql 使用联接在一个Select语句中进行多个计数?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,这将返回表&Table2中的行数,但我只想返回Table2的行数,最好是在一个select语句中 SELECT Table.Name, Count(Table2.Active) FROM Table LEFT JOIN Table2 ON Table2.Active = 1 建议?在SELECT子句中写入查询: 我没有更改您的表联接,但它没有任何意义。为什么要为第一个表中的每一行从第二个表中提取一次计数?这是非常低效的。更好的做法是: DECLARE @c INT; SELECT @c =

这将返回表&Table2中的行数,但我只想返回Table2的行数,最好是在一个select语句中

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

在SELECT子句中写入查询:


我没有更改您的表联接,但它没有任何意义。

为什么要为第一个表中的每一行从第二个表中提取一次计数?这是非常低效的。更好的做法是:

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

不,这不符合您对单语句的要求,但我很好奇,为什么您认为这是一个好的或高效的查询的衡量标准。

您的连接没有意义-它不是经典意义上的连接记录,而是创建未过滤的笛卡尔积。
DECLARE @c INT;
SELECT @c = COUNT(*) FROM dbo.Table2;
SELECT Name, @c FROM dbo.Table;