2013-02-12 207 views
0

我在wordpress表格(postmeta)上查询。该表中有键和值,我需要一个查询,将获得匹配“key1”等于“value1”和“key2”等于value2排序值的所有行“value2”mySQL查询键值对

表基本上有一个id,postid ,键和值列。

我不确定从哪里开始。我可以找到一个值罚款ie ... where key ='featured'& value = true。但我需要按行数值排序的top 25,其中key ='hits'意思是我需要这些特色行的相应匹配值的值

我不知道如何做到这一点。

TIA

+0

你有什么试过自己?你还可以向我们展示postmeta的表格定义吗?我建议使用http://sqlfiddle.com/来举例说明数据库和查询。 – Wolph 2013-02-12 01:52:34

回答

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

+0

这非常有帮助。我明天再试。谢谢 – Jeff 2013-02-12 02:54:56