SQL计数特定记录的结果数
我有两个表,它们通过内部联接链接。这些是我的桌子:SQL计数特定记录的结果数,sql,inner-join,Sql,Inner Join,我有两个表,它们通过内部联接链接。这些是我的桌子: T1 ID name Account 1 name1 123 1 name1 143 T2 AccountNum ID 222 1 111 1 我想为一个特定的名称添加ByID的总数,我的输出应该是 ID name Account NumOfByAcc 1 name1 123 2 在上表中,发生的情况是ID 1有两个帐号(T2)。我如何使
T1
ID name Account
1 name1 123
1 name1 143
T2
AccountNum ID
222 1
111 1
我想为一个特定的名称添加ByID的总数,我的输出应该是
ID name Account NumOfByAcc
1 name1 123 2
在上表中,发生的情况是ID 1有两个帐号(T2)。我如何使用两个表之间的内部联接计算特定ID的帐号总数。这是我的查询,但我不确定如何完成第二个select语句:
SELECT Table1.ID, Table1.NAme, Table2.Account AS Expr1,
SELECT count() AS NumOfByAcc//2nd select statement
FROM Table2 INNER JOIN
Table1 ON Table2.ID= Table1.ID
我不确定如何完成我的第二个select语句:
SELECT Table1.ID, Table1.NAme, Table2.Account AS Expr1,
SELECT count() AS NumOfByAcc//2nd select statement
FROM Table2 INNER JOIN
Table1 ON Table2.ID= Table1.ID
像这样:
SELECT
t1.ID
, t1.NAme
, t2.Account AS Expr1
, (SELECT count(*) FROM Table1 tt WHERE tt.ID=t2.ID) AS NumOfByAcc
FROM Table2 t2
INNER JOIN Table1 t1 ON t2.ID= t1.ID
注意别名t1
、t2
和tt
的使用。当同一个表需要多次参与单个查询时,别名提供了一种在表达式中引用该表的方法,以便根据需要筛选和/或加入记录。请尝试:
select *, (select count(*) from T2 where T2.Id = T1.Id) as NumOfByAcc
from T
执行重载的是
GROUP BY
子句。表中的两行如何具有相同的ID1@Amir上面的表中没有主键,这不是执行左连接
而不是内部连接
?如中所示,对于T2
中不存在的记录,您将获得0
计数。OP引用了一个内部联接,因此我认为这种情况甚至不会发生。是的,你是对的,但我可能会认为你应该把它看作一个标量子查询,而不是左连接。如果OP需要删除这些行,您的答案可能是正确的选择。我自己不太了解表的关系,但您的查询将为ID=1生成4行,这显然不是OP想要的。@shawnt00我确信此查询将为OP提供足够的信息,以便以一种产生他想要的输出的方式对其进行调整。