mysql - 水平选择行

时间:2013-02-18 18:44:18

标签: mysql

我有这个mysql表(如下图所示)。我想选择按ID分组的ID

其中:
datakey = label和datavalue = is_member
并且,在同一时间:
datakey = since和datavalue = 20110204

所以最终结果应该是 105

我怎样才能做到这一点?

enter image description here

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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引用相同的数据集。