如何只选择标志值因同名而变化的名称?
name flag
ben 0
harry 1
harry 1
harry 1
john 1
john 0
john 1
krishna 1
krishna 1
luke 0
steve 1
steve 0
结果应该选择john和steve
答案 0 :(得分:7)
您可以使用以下内容按name
对数据进行分组,并计算不同的标记值。如果count
大于1,则它们具有不同的标志:
select name
from yourtable
group by name
having count(distinct flag) > 1
如果您想对此进行扩展并在表格中包含其他列,则可以使用:
select t1.name, t1.flag
from yourtable t1
where exists (select name
from yourtable t2
where t1.name = t2.name
group by name
having count(distinct flag) > 1)
这将返回名称和标志:
| NAME | FLAG |
----------------
| john | 1 |
| john | 0 |
| john | 1 |
| steve | 1 |
| steve | 0 |
答案 1 :(得分:4)
尝试以下方法:
SELECT DISTINCT t1.Name
FROM Table t1
INNER JOIN Table t2 ON t1.Name = t2.Name
WHERE t1.flag <> t2.flag