You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现SQL查询结果单行展示 解决同ID分两行重复问题

问题原因

当前使用的UNION语法作用是对两个查询结果做纵向行合并:两个查询均返回2列数据,执行后会把两个查询的结果逐行堆叠到同一结果集中。这就导致同一个订单ID会生成两行记录:一行存储订单发布时间,另一行存储订单总金额,自然无法实现单行展示。

修正方案

改用表关联(JOIN)做横向字段拼接,以订单主表为基准关联订单元数据表,把同一个ID对应的不同字段合并到同一行返回,修正后的查询语句如下:

SELECT
    p.id,
    p.post_date,
    pm.meta_value AS order_total
FROM mln_posts p
LEFT JOIN mln_postmeta pm
    ON p.id = pm.post_id
    AND pm.meta_key = '_order_total'
WHERE p.post_type = 'shop_order'
ORDER BY p.id
使用说明
  • 语句中用p作为mln_posts的别名、pm作为mln_postmeta的别名简化写法,关联时直接匹配订单ID,同时筛选元数据键为_order_total,避免关联出多余的元数据记录
  • 使用LEFT JOIN会保留所有shop_order类型的订单,若对应订单未写入总金额元数据,order_total字段会返回空值;如果需要过滤掉没有总金额记录的异常订单,把LEFT JOIN替换为INNER JOIN即可

内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:42:54