0

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

该表基本上有一个 id、postid、key 和 value 列。

我什至不确定从哪里开始。我可以找到一个很好的值,即...其中 key='featured' & value=true。但是我需要按 key='hits' 的行的值排序的前 25 个值,这意味着我需要那些精选行的相应 hits 键的值

我不知道该怎么做。

TIA

4

1 回答 1

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

或者您可以将聚合函数与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

于 2013-02-12T02:29:14.353 回答