gpt4 book ai didi

mysql - 在 JOIN 查询中将列设置为 null 或为空

转载 作者:行者123 更新时间:2023-11-29 10:47:23 25 4
gpt4 key购买 nike

订单表

ORDER_ID|ORDER_DT
1 |12-12-2016

产品表

PRODUCT ID | ORDER ID
1 | 1
2 | 1

使用SELECT * FROM order o LEFT JOIN Product p ON o.order_id = p.order_id;

结果

 PRODUCT ID | ORDER ID|ORDER_DT
1 | 1 |12-12-2016
2 | 1 |12-12-2016
3 | 1 |12-12-2016

但我需要这样的结果,注意到我仍然有相同的编号。订单表列中重复的行已被清空。

PRODUCT ID | ORDER ID|ORDER_DT
1 | 1 |12-12-2016
2 | |
3 | |

最佳答案

您可以使用临时变量来做到这一点,例如:

SELECT product_id, orders.order_id, order_dt, IF(@previous = orders.order_id, 0, orders.order_id) AS oid, @previous:= orders.order_id
FROM orders
LEFT JOIN products
ON orders.order_id = products.order_id,
(SELECT @previous := -1) a;

并将其包装到另一个 SELECT 查询中以获取所需的列,例如:

SELECT r.product_id, IF(r.oid = 0, '', r.oid) AS order_id, r.order_dt 
FROM (
SELECT product_id, orders.order_id, order_dt, IF(@previous = orders.order_id, 0, orders.order_id) AS oid, @previous:= orders.order_id
FROM orders
LEFT JOIN products
ON orders.order_id = products.order_id,
(SELECT @previous := -1) a
) r;

这是SQL Fiddle

关于mysql - 在 JOIN 查询中将列设置为 null 或为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44315779/

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