2013-02-18 59 views
0

我有這個mysql表(如下圖)。我想選擇的ID通過ID分組mysql - 水平選擇行

其中:
datakey =標籤和datavalue = IS_MEMBER
,並在同一時間,其中:
datakey =因爲和datavalue = 20110204

所以結束結果應該是。

我該如何做到這一點?

enter image description here

+1

請修改您的帖子,以便至少包含您對解決方案的嘗試之一。謝謝。 – bernie 2013-02-18 18:47:27

回答

2

應該有可能在沒有連接的情況下實現這一點。 http://www.sqlfiddle.com/#!2/ca8d6/1

SELECT t.id 
FROM table_name t 
WHERE (datakey = 'Label' AND datavalue = 'is_member') OR (datakey = 'Since' AND datavalue = '20110204') 
GROUP BY t.id 
HAVING COUNT(datakey) = 2; 
+0

不幸的是,這將無法正常工作,因爲我需要的查詢工作兩種語句不是... – Ash 2013-02-18 22:19:07

+0

此查詢將返回兩個。在查詢中可能有OR,但使用GROUP BY和HAVING,該查詢將完全按照您的要求返回。或者我在這裏忽略了什麼? – Slowcoder 2013-02-18 23:31:27

+0

+1對我來說看起來是正確的 – scones 2013-02-19 01:09:16

1

這應該得到你所需要的

SELECT 
    a.id 
FROM 
    some_table AS a 
    JOIN some_table AS b 
    ON 
     b.id = a.id 
WHERE 
    a.datakey = 'Label' 
    AND 
    a.datavalue = 'is_member' 
    AND 
    b.datakey = 'Since' 
    AND 
    b.datavalue = '20110204' 

假設這裏是,在相同數據集中的領域id引用。

+0

好吧,所以加入是唯一的方法...謝謝 – Ash 2013-02-18 18:50:01

+0

刪除該特定的錯字;) – scones 2013-02-18 18:50:43