如何仅选择同一名称的标志值不同的名称?
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
您可以使用以下内容对数据进行分组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 |
尝试以下操作:
SELECT DISTINCT t1.Name
FROM Table t1
INNER JOIN Table t2 ON t1.Name = t2.Name
WHERE t1.flag <> t2.flag