同じ名前でフラグ値が異なる名前のみを選択するにはどうすればよいですか?
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
結果はジョンとスティーブを選択する必要があります
以下を使用して、データをとでグループ化しname
、個別のフラグ値をカウントします。count
が1より大きい場合、フラグは異なります。
select name
from yourtable
group by name
having count(distinct flag) > 1
SQL FiddlewithDemoを参照してください
これを拡張してテーブルに追加の列を含める場合は、次を使用できます。
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)
SQL FiddlewithDemoを参照してください
これにより、名前とフラグの両方が返されます。
| 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