mySQL 查询键值对

mySQL query key value pairs(mySQL 查询键值对)
本文介绍了mySQL 查询键值对的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

I am doing a query on a wordpress table (postmeta). The table has keys and values and I need a query that will get all rows that match "key1" equal to "value1" and "key2" equal to "value2" ordered by value2

该表基本上有 id、postid、key 和 value 列.

The table basically has an id, postid, key and value columns.

我什至不知道从哪里开始.我可以找到一个很好的值,即 ... where key='featured' &值=真.但我需要按行的值排序的前 25 个,其中 key='hits' 意味着我需要这些特色行的相应命中键的值

I am not sure even where to start. I can find one value fine ie ... where key='featured' & value=true. But I need the top 25 ordered by the value of the rows where key='hits' meaning I need the value of the corresponding hits key for those featured rows

我不知道该怎么做.

TIA

推荐答案

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

It is difficult to say exactly how to do this with the limited details that you provided. But when you want to return key/value pairs you can use the following.

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

You can join on your table multiple times:

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() 用于字符串值:

Or you can use an aggregate function with a CASE expression (using sum() assumes a numeric value, you can use max()/min() for string values:

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

这篇关于mySQL 查询键值对的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)
Why Mysql#39;s Group By and Oracle#39;s Group by behaviours are different(为什么 Mysql 的 Group By 和 Oracle 的 Group by 行为不同)
MySQL GROUP BY DateTime +/- 3 seconds(MySQL GROUP BY DateTime +/- 3 秒)