SQL-如何查找字段中仅包含1个值的记录
我有一张这样的桌子:SQL-如何查找字段中仅包含1个值的记录,sql,select,Sql,Select,我有一张这样的桌子: member value 0001 1 0001 2 0001 3 0002 1 0002 2 0003 1 基本上我需要做的是检索成员3,因为它们只有一个值为1的记录。成员2具有值为1和2的记录,成员3具有值为1、2和3的记录 请帮忙 谢谢 Rob我将使用不存在的: 如果使用MS Sql Server NOT EXISTS,它也是最有效的方法,在可空列上没有问题
member value
0001 1
0001 2
0001 3
0002 1
0002 2
0003 1
基本上我需要做的是检索成员3,因为它们只有一个值为1的记录。成员2具有值为1和2的记录,成员3具有值为1、2和3的记录
请帮忙
谢谢
Rob我将使用不存在的:
如果使用MS Sql Server NOT EXISTS,它也是最有效的方法,在可空列上没有问题。值得一读:这适用于Transact-SQL
SELECT member, value
FROM TableName
WHERE value IN
(SELECT value FROM TableName
GROUP BY value
HAVING COUNT(*) = 1)
如果有多个成员有一个条目,它会找到所有条目。截至发帖时,有很多复杂的答案,但这个问题可以很简单地通过使用GROUP BY和拥有:
select member
from (
select '0001' as member, 1 as value
union
select '0001' as member, 2 as value
union
select '0001' as member, 3 as value
union
select '0002' as member, 1 as value
union
select '0002' as member, 2 as value
union
select '0003' as member, 1 as value
) members
group by member
having count(*) = 1
你没有提到你正在使用什么RDBMS,但是AIUI,上面的代码应该是ANSI兼容的;它还假设您的表被称为类似members\u values的名称。听起来好像您在寻找该表中只存在一次的成员 以下查询按成员分组,并证明该成员在表中出现的次数
SELECT member
, Count(*) As number_of_apperances
FROM your_table
GROUP
BY member
现在,我们使用HAVING子句限制此聚合,以仅显示仅出现一次的记录:
SELECT member
, Count(*) As number_of_apperances
FROM your_table
GROUP
BY member
HAVING Count(*) = 1
试试这个:
SELECT member
FROM MyTable
GROUP BY member
HAVING COUNT(value) = 1
请在SQLFIDLE中发布您迄今为止尝试的代码和表。我会要求在原始问题中发布这些表。StackOverflow的问题将持续数年,但我们无法知道sqlfiddle帖子还有多长时间可用。
SELECT member
, Count(*) As number_of_apperances
FROM your_table
GROUP
BY member
HAVING Count(*) = 1
SELECT member
FROM MyTable
GROUP BY member
HAVING COUNT(value) = 1