如何僅選擇標誌值因同一名稱而異的名稱?找到列值變化的地方
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 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
如果你想在這個擴展,包括附加列在表中,那麼你可以使用:
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 |
變化。 SQL小提琴也非常好:)。是否有可能在結果中列出:約翰1 約翰0 約翰1史蒂夫1 史蒂夫0 – 2013-02-12 10:42:07
@SantoshPillai看到我編輯與不同版本的查詢 – Taryn 2013-02-12 10:45:47
謝謝。完美的作品。你能解釋你如何使用t1和t2嗎? – 2013-02-12 10:54:09
嘗試以下操作:
SELECT DISTINCT t1.Name
FROM Table t1
INNER JOIN Table t2 ON t1.Name = t2.Name
WHERE t1.flag <> t2.flag
對不起,意味着工作得非常好同名 – 2013-02-12 10:32:45