2014-09-21 103 views
1

我有台这样的MySQL查询返回的行

Post_ID KEY Value 
1  year 2014 
1  month 09 
2  year 2014 
2  month 10 
3  year 2014 
3  month 09 

在这个表我已经POST_ID,密钥(这表明一年后的一个月)和价值(代表年份值和月份值)

我想返回发表“2014”和月是“09”,这意味着我有值1和3的所有POST_ID。

回答

0

我算多少属性相匹配,本说明书和过滤他们的counthaving条款:

SELECT post_id 
FROM  my_table 
WHERE (key = 'year' AND value = '2014') OR 
     (key = 'month' AND value = '09') 
GROUP BY post_id 
HAVING COUNT(*) = 2 
+0

由于它的工作原理,但究竟是在此查询的意思是“HAVING COUNT(*)= 2” ? – 2014-09-22 17:25:26

+0

的'having'子句是施加的条件** **后的分组。所以,基本上,这个查询选择所有年=地2014年OR月= 09和计数有多少匹配有平均每个职位的职位。如果有2,这意味着这两个条件得到满足,这就是你想要返回一个职位。 – Mureinik 2014-09-22 17:28:52