mysql - mySQL 查询返回 3 列,我想从连接到逗号分隔字符串的列中获取值
问题描述
我需要从相应的 meta_key 列中具有“shipping”的 meta_value 列中获取值,并将它们连接成逗号分隔的行。
我对 SQL 有点陌生,所以请保持温柔。
我目前的查询是这样的:
SELECT wp_postmeta.post_ID, wp_postmeta.meta_key, wp_postmeta.meta_value, wp_posts.ID, wp_posts.post_status
FROM wp_postmeta
CROSS JOIN wp_posts
WHERE wp_postmeta.post_ID= wp_posts.ID
AND wp_posts.post_status LIKE 'wc-processing'
AND (wp_postmeta.meta_key LIKE '%shipping%' OR wp_postmeta.meta_key LIKE '_order_total')
解决方案
您可以使用GROUP_CONCAT
将字符串连接在一起。正如@kermit 所指出的,您应该使用 an INNER JOIN
not a CROSS JOIN
。我假设您希望将订单总额与运输详细信息分开,因此您还需要使用条件聚合。这个查询应该做你想做的事:
SELECT m.post_ID
, GROUP_CONCAT(CASE WHEN m.meta_key LIKE '%shipping%' THEN m.meta_value END) AS shipping_info
, MAX(CASE WHEN m.meta_key = '_order_total' THEN m.meta_value ELSE 0 END) AS order_total
FROM wp_postmeta m
INNER JOIN wp_posts p ON m.post_ID = p.ID
WHERE p.post_status LIKE 'wc-processing'
AND (m.meta_key LIKE '%shipping%' OR m.meta_key LIKE '_order_total')
推荐阅读
- python - 使用 PyCUDA 和 TensorRT 遇到非法内存访问
- ios - 我可以使用这种方法 CrossDeviceInfo.Current.Id 还是苹果商店会拒绝我的应用程序?
- excel - 按下按钮比较 Excel VBA 中的 2 个动态范围列
- c++ - 使用通用成员变量“放置新”结构/类数组的正确方法是什么?
- c++ - 从导入的 DLL 调用主程序中的函数
- python - 您可以导出创建的 python conda 环境供其他人在他们的机器上激活吗?
- c - Petsc 代码在 2990WX 平台上没有并行加速
- jquery - 如何解决“jQuery 需要一个带有文档的窗口”错误?
- php - 在php中插入具有随机名称的图像源名称
- camunda - 如何使用cli将历史级别更改为camunda中的活动