Mysql查询基于同一表中的多列返回行
我有这样的桌子Mysql查询基于同一表中的多列返回行,mysql,sql,Mysql,Sql,我有这样的桌子 Post_ID KEY Value 1 year 2014 1 month 09 2 year 2014 2 month 10 3 year 2014 3 month 09 在这个表中,我有post_id,key表示职位的年份和月份,value表示年份值和月份值 我想返回2014年发布的所有post_ID,月份为09,这意味着我的值为1和3 我会计算有多少属性与此规范
Post_ID KEY Value
1 year 2014
1 month 09
2 year 2014
2 month 10
3 year 2014
3 month 09
在这个表中,我有post_id,key表示职位的年份和月份,value表示年份值和月份值
我想返回2014年发布的所有post_ID,月份为09,这意味着我的值为1和3 我会计算有多少属性与此规范匹配,并使用having子句过滤它们的计数:
谢谢,它可以工作,但是在这个查询中让COUNT*=2是什么意思呢?HAVING子句是在分组之后应用的一个条件。因此,基本上,这个查询选择了年=2014或月=09的所有帖子,并统计每个帖子有多少匹配项。如果有2个,这意味着两个条件都满足了,这是你想要返回的帖子。
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