2012-04-11 54 views
0

認爲像這樣的表中,獲得基於相應的值對ID唯一

ID  Value  
100 1  
100 2  
101 1  
101 2 
102 1  
103 2 
104 1 

現在我想找回根據其相應的價值組合唯一的ID。 (即)100同時具有1和2作爲值。 101也有1和2.現在我不想要100和101.我只想要其中的一個(100或101)。同樣,我不想要102和104,因爲他們都有值1.我只想要他們。通常情況下,我的結果應如下

ID 
100 
102 
103 

我希望具有唯一對應值對的ID。 我正在使用MYSQL。請幫我寫查詢來找到這個。

+0

我想你可能需要解釋你的情況的背景,以幫助我們理解你想要達到的目標。這聽起來像某種關係部門將成爲解決方案。如果每個ID總是有兩個值,那麼這將是微不足道的,但是如果每個ID具有可變數量的值,則它要複雜得多。 – nnichols 2012-04-11 12:58:36

回答

2

你可以嘗試這樣的事:

select 
    min(id) 
from (
    select 
    id, 
    group_concat(value order by value) as values 
    from <table> 
    group by id 
) r 
group by values 

這是如何工作的:

  • 子查詢返回一行每個ID,與具有所有值的一個額外的列(在排序順序,這對於下一步很重要)
  • 外部查詢選擇每個值集合的最小ID
+0

這將得到他的價值觀,他想要的ID ..你也需要在group_concat的子查詢工作.. – barsju 2012-04-11 13:16:28

+0

好吧,你剛剛改變了你的答案..這就是作弊;) – barsju 2012-04-11 13:19:00

+1

@barsju我意識到它是錯誤的,並在你離開你的消息之前修復它。 – 2012-04-11 13:19:57