根据列值选择唯一行

时间:2015-09-23 12:23:49

标签: sql sql-server select unique

原始表有三个不唯一的列,其中id值按组分开数据:

id  name                flag
----------------------------
1   Andrey              0
1   Andrey              1
1   Olga                0
1   Sasha               0
2   Masha               1
2   Masha               0
2   Katya               1
2   Vera                0

这里我们有两组人,每组有两行,名称相同。我想写一个选择状态,它与标志0重复名称行,当且仅当这个确切的名称在同一组中有1个标志时。

因此,此数据的预期结果应为:

id  name                flag
----------------------------
1   Andrey              1
2   Masha               1

因为安德烈和玛莎是重复的,他们也有0个旗帜。

我尝试选择这些值的方法是使用如下查询:

select * from names
    where flag = 1 and id in
    (select id from names where flag = 0)

但它也会返回Katya行,这是不可接受的。

2 个答案:

答案 0 :(得分:4)

您可以使用passwd

$scope.passwd

答案 1 :(得分:2)

您可以使用intersect运算符来获取包含这两个标志的name

select name from names where flag = 0
intersect 
select name from names where flag = 1

在MySQL中,你可以这样做,

select n1.name 
from names n1 
join names n2 on n1.name = n2.name and n2.flag = 1
where n1.flag = 0