gpt4 book ai didi

MySQL WordPress 从 meta_value 中提取数据

转载 作者:行者123 更新时间:2023-11-29 19:18:51 25 4
gpt4 key购买 nike

如何在每个meta_key都是一列的表中处理meta_key、meta_value对?

背景:我需要获取在 Learnpress(Wordpress 插件)中进行的每次购买的付款方式、数量以及两个日期之间进行付款的用户等。

Learnpress 将购买保存为帖子,并将每次购买的属性保存为 wp_postmeta 中的 meta_key、meta_value 对。如果 wp_postmeta 在不同的列中有不同的属性,我可以这样做:

SELECT attribute1, attribute2, attribute3 FROM wp_postmeta, wp_posts 
WHERE wp_postmeta.post_id = wp_posts.ID;

但是,每个帖子在 wp_postmeta 中有 N 行,每个属性一行。如何连接数据以便我可以获得一个表,其中一行包含每个帖子的所有属性?

示例:

wp_post表

ID   (Other Columns)
1
2
3

wp_postmeta table:
ID post_id meta_key meta_value
1 1 user testuser1
2 1 payment_method paypal
3 1 quantity 25
(Other rows, with the same post_id, one for each attribute of this purchase)
4 2 user testuser2
5 2 payment_method credit_card
6 2 quantity 50

Desired Result:
Post_ID user payment_method quantity (Other attributes)
1 testuser1 paypal 25
2 testuser2 credit_card 50

注意:某些帖子比其他帖子有更多与之关联的帖子元行。如果帖子在 postmeta 中没有属性,那么它在最终表中应该为 null。

这样的事情怎么能完成呢?提前致谢。

最佳答案

例如:

DROP TABLE IF EXISTS wp_postmeta;

CREATE TABLE wp_postmeta
(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,post_id INT NOT NULL
,meta_key VARCHAR(30) NOT NULL
,meta_value VARCHAR(30) NOT NULL
,UNIQUE(post_id,meta_key)
);

INSERT INTO wp_postmeta VALUES
(1,1,'user','testuser1'),
(2,1,'payment_method','paypal'),
(3,1,'quantity',25),
(4,2,'user','testuser2'),
(5,2,'payment_method','credit_card'),
(6,2,'quantity','50');

SELECT x.post_id
, MAX(CASE WHEN x.meta_key = 'user' THEN x.meta_value END) user
, MAX(CASE WHEN x.meta_key = 'payment_method' THEN x.meta_value END) payment
, MAX(CASE WHEN x.meta_key = 'quantity' THEN x.meta_value END) quantity
FROM wp_postmeta x
GROUP
BY post_id;

+---------+-----------+-------------+----------+
| post_id | user | payment | quantity |
+---------+-----------+-------------+----------+
| 1 | testuser1 | paypal | 25 |
| 2 | testuser2 | credit_card | 50 |
+---------+-----------+-------------+----------+

如果您能够找到一种根据数据类型将值分离到离散表中的方法,性能可能会有所提高。

关于MySQL WordPress 从 meta_value 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42543666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com