4

同じ名前でフラグ値が異なる名前のみを選択するにはどうすればよいですか?

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

結果はジョンとスティーブを選択する必要があります

4

2 に答える 2

7

以下を使用して、データをとでグループ化し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 |
于 2013-02-12T10:32:38.453 に答える
4

次のことを試してください。

SELECT DISTINCT t1.Name
FROM Table t1 
INNER JOIN Table t2 ON t1.Name = t2.Name
WHERE t1.flag <> t2.flag
于 2013-02-12T10:33:02.780 に答える