mySQL查询键值对

时间:2013-02-12 01:47:52

标签: mysql wordpress

我正在对wordpress表(postmeta)进行查询。该表有键和值,我需要一个查询,使所有匹配“key1”的行等于“value1”,“key2”等于“value2”,按value2排序

该表基本上有id,postid,key和value列。

我不确定哪里可以开始。我可以找到一个很好的值,即...其中key ='featured'&值=真。但是我需要按行的值排序前25位,其中key ='hits'意味着我需要那些特色行的相应命中键的值

我不知道该怎么做。

TIA

1 个答案:

答案 0 :(得分:0)

使用您提供的有限详细信息很难确切地说明如何执行此操作。但是当您想要返回键/值对时,可以使用以下内容。

您可以多次加入您的桌子:

select p1.postid,
  p1.value Featured,
  p2.value Hits
from postmeta p1
left join postmeta p2
  on p1.postid = p2.postid
  and p2.key = 'hits'
where p1.key ='featured';

请参阅SQL Fiddle with Demo

或者您可以使用带有CASE表达式的聚合函数(使用sum()假定数值,您可以使用max() / min()作为字符串值:

select postid,
  sum(case when `key` = 'featured' then value end) Featured,
  sum(case when `key` = 'hits' then value end) Hits
from postmeta
group by postid

请参阅SQL Fiddle with Demo