如何仅选择标志值因同名而变化的名称?
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
Run Code Online (Sandbox Code Playgroud)
结果应该选择约翰和史蒂夫
您可以使用以下内容对数据进行分组name并计算不同的标志值.如果count大于1则它们具有不同的标志:
select name
from yourtable
group by name
having count(distinct flag) > 1
Run Code Online (Sandbox Code Playgroud)
如果要对此进行扩展并在表中包含其他列,则可以使用:
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)
Run Code Online (Sandbox Code Playgroud)
这将返回名称和标志:
| NAME | FLAG |
----------------
| john | 1 |
| john | 0 |
| john | 1 |
| steve | 1 |
| steve | 0 |
Run Code Online (Sandbox Code Playgroud)