我目前有这个,所以我可以显示产品结果说:“产品数据未找到”在Meta_key“product_info”
我的当前查询是这样的SQL:
SELECT *
FROM `wp_postmeta`
WHERE `meta_key` LIKE 'product_info'
AND `meta_value` LIKE '%Product data not found%'
字符串
除此之外,我需要能够显示他们从最旧的到最新的顺序,这些数据是在Meta键“last_update”中找到的数字形式的例子。
如何使用Meta_key“last_update”执行userorder by
SQL结构示例
post_id meta_key meta_value
19248 product_info Product data not found
19248 last_update 1959520849
19249 product_info Product data not found
19249 last_update 1659520849
19250 product_info OK
19250 last_update 1759520849
19251 product_info Product data not found
19251 last_update 1859520849
型
我希望能达到这个目的
post_id meta_key meta_value
19249 product_info Product data not found
//not visible result 19249 last_update 1659520849
19251 product_info Product data not found
//not visible result 19251 last_update 1859520849
19248 product_info Product data not found
//not visible result 19248 last_update 1959520849
型
正如我们所看到的,它是从最低的数字排序的,只考虑了他们在他们的product_info“未找到产品数据”中的post_id。
不可见的结果=我把它,所以你可以看到,它是按时间排序的
对不起,如果这个问题措辞不好,我是SQL新手。
2条答案
按热度按时间50pmv0ei1#
您需要再次从
JOIN
到wp_postmeta
,查找相同的post_id
和last_update
的meta_key
。然后您可以从第二个表中ORDER BY
meta_value
:字符串
示例数据的输出:
型
db-fiddle.com上的演示
请注意,我使用
LEFT JOIN
和COALESCE
来处理任何没有last_update
值的帖子。COALESCE
中的0
值意味着这些帖子将首先排序;如果你想让它们最后排序,请使用COALESCE(wp2.meta_value, 2147483647)
。2ul0zpep2#
一个非常常见的方法是在这样的表结构中积累相关数据,执行一个pivot。一个已知列名的pivot查询使查询的开发和维护变得更加容易,因为在从聚合数据中挤出所需的值之后,您可以享受非常简单的访问。
使用GROUP BY和筛选聚合数据的好处最初看起来似乎是很多工作,但是当您开始为单个
post_id
堆积多行时,这种方法确实会看到它的回报。Schema(MySQL v8.0)
字符串
查询View on DB Fiddle
型
| 发布标识|产品信息|最后更新|
| --|--|--|
| 19249 |未找到此产品数据| 1659520849 |
| 19251 |没有找到产品数据.是的,我看了| 1859520849 |
| 19248 |在任何地方都找不到产品数据| 1959520849 |
我之前就透视表给出的一些相关建议: