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