我有一个表,可以像这样的记载:SQL - 如何找到一个只包含1的字段值
member value
0001 1
0001 2
0001 3
0002 1
0002 2
0003 1
基本上就是我需要做的是检索成员3,因为他们只有一个记录的值为1.成员2的记录值为1和2,成员3的记录值为1,2和3.
请帮忙!
感谢
罗布
我有一个表,可以像这样的记载:SQL - 如何找到一个只包含1的字段值
member value
0001 1
0001 2
0001 3
0002 1
0002 2
0003 1
基本上就是我需要做的是检索成员3,因为他们只有一个记录的值为1.成员2的记录值为1和2,成员3的记录值为1,2和3.
请帮忙!
感谢
罗布
我会用NOT EXISTS
与correlated subquery:
SELECT t.member, t.value
FROM dbo.TableName t
WHERE value = 1
AND NOT EXISTS
(
SELECT 1 FROM dbo.TableName t2
WHERE t2.value <> 1
AND t.member = t2.member
)
如果您使用MS SQL-服务器NOT EXISTS
也是最有效的方法在null上没有问题能够列。值得一读:http://www.sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join
此作品在Transact-SQL
SELECT member, value
FROM TableName
WHERE value IN
(SELECT value FROM TableName
GROUP BY value
HAVING COUNT(*) = 1)
如果它发现他们所有的单个条目多个成员。
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
有很多复杂的答案,作为发布的时间,但这个问题可以很简单地使用GROUP BY
和HAVING
回答:您正在使用
select member
from members_values
group by member
having count(value) = 1
您还没有提到什么RDBMS但是AIUI,上面的代码应该是ANSI兼容的;它也假设你的桌子被称为members_values
。
听起来你正在寻找发现,仅在该表中存在,一旦member
...
以下查询组由member
和证明的次数是member
出现在表格
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
请发表您的代码,你试过到目前为止并在sqlfiddle你的表。 –
我会问这个表是在原始问题中发布的。 StackOverflow的问题将会持续多年,但我们无法知道平台发布的帖子仍然可用多久。 –