Sql server 如何选择所有状态均为零的记录?
假设我有下列表格 Person表和personStatus表 现在我想找到所有状态都为零的个人ID 结果是-->10 怎么做Sql server 如何选择所有状态均为零的记录?,sql-server,sql-server-2008,sql-server-2005,sql-server-2000,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2000,假设我有下列表格 Person表和personStatus表 现在我想找到所有状态都为零的个人ID 结果是-->10 怎么做 SELECT id FROM @PersonStatus GROUP BY ID HAVING COUNT(DISTINCT statuss) = 1 AND MAX(statuss) = 0 或 因为我假设@Persons表不仅仅有一个PersonId列,您可能还需要其他列,所以我认为@Persons需要成为查询的一部分 SELECT p
SELECT id
FROM @PersonStatus
GROUP BY ID
HAVING COUNT(DISTINCT statuss) = 1 AND
MAX(statuss) = 0
或
因为我假设@Persons表不仅仅有一个PersonId列,您可能还需要其他列,所以我认为@Persons需要成为查询的一部分
SELECT p.PersonId --, other columns from p
FROM @Persons AS p
WHERE EXISTS (SELECT id FROM @PersonStatus
WHERE id = p.PersonId
GROUP BY id HAVING MAX(statuss) = 0);
是否要返回子表中没有行的人员?否这不是我的场景是否只返回其所有状态为零的人员?
SELECT id
FROM @PersonStatus
GROUP BY ID
HAVING MAX(statuss) = MIN(statuss) AND
MAX(statuss) = 0
select distinct p.id from @PersonStatus as p
where Statuss = 0
and not exists (select null from @Personstatus as t
where p.id = t.id and t.statuss <> 0)
SELECT p.PersonId --, other columns from p
FROM @Persons AS p
WHERE EXISTS (SELECT id FROM @PersonStatus
WHERE id = p.PersonId
GROUP BY id HAVING MAX(statuss) = 0);