我正在寻找一种有效的方法来从我的SELECT
语句WHERE
中排除行,而不是返回多个行,并为特定列返回相同的值。
具体来说,我要选择一堆帐户,但是需要排除发现多个帐户关联了同一SSN的帐户。
最佳答案
这将返回恰好1行的所有SSN
select ssn,count(*)
from SomeTable
group by ssn
having count(*) = 1
这将返回所有超过1行的SSN
select ssn,count(*)
from SomeTable
group by ssn
having count(*) > 1
您的完整查询将是这样的(将在SQL Server 7及更高版本上运行)
select a.* from account a
join(
select ssn
from SomeTable
group by ssn
having count(*) = 1) s on a.ssn = s.ssn