2013-02-18 61 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