我有一张 table ,上面有一个人的名字,位置(他们住的地方)和一个parent_id
( parent 存储在另一张 table 上)。因此,例如:
name | location | parent_id
--------+-----------+-----------
Joe | Chicago | 12
Sammy | Chicago | 13
Bob | SF | 13
Jim | New York | 13
Jane | Chicago | 14
Dave | Portland | 14
Al | Chicago | 15
Monica | Boston | 15
Debbie | New York | 15
Bill | Chicago | 16
Bruce | New York | 16
我需要数一下住在芝加哥有多少人
居住在纽约的 sibling (共享parent_id)。因此,对于上面的示例,
计数将是3。
name | location | parent_id
--------+-----------+-----------
Joe | Chicago | 12
Sammy | Chicago | 13 * sibling Jim lives in New York
Bob | SF | 13
Jim | New York | 13
Jane | Chicago | 14
Dave | Portland | 14
Al | Chicago | 15 * sibling Debbie lives in New York
Monica | Boston | 15
Debbie | New York | 15
Bill | Chicago | 16 * sibling Bruce lives in New York
Bruce | New York | 16
有人可以帮我编写SQL查询此计数吗?
最佳答案
相关查询是一个很好的方法,并且非常有效。避免使用distinct,因为这是一项昂贵的操作。分组依据是使用distinct的不错选择。了解数据并相应地构造查询。这是引擎优化的另一个选项...
select count(*)
from (select * from #t where Location = 'Chicago') ch
inner join (select * from #t where Location = 'New York') ny on ch.ParentID = ny.ParentID