原始表有三个不唯一的列,其中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行,这是不可接受的。
答案 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