Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql查询基于同一表中的多列返回行_Mysql_Sql - Fatal编程技术网

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