gpt4 book ai didi

mysql - 从 mysql 连接查询返回不同的空记录

转载 作者:行者123 更新时间:2023-11-29 01:00:45 24 4
gpt4 key购买 nike

有什么方法可以从表连接中返回带有空白/空数据的不同值。最好用我下面的例子来解释。

表“订单”

order_id | order_total
1 | 10
2 | 20
3 | 50

表“order_items”

item_id | order_id | name     | qty_ordered | base_price | row_total
1 | 1 | Product | 1 | 10 | 10
2 | 2 | Product | 1 | 10 | 10
3 | 2 | Product2 | 1 | 10 | 10
4 | 3 | Product | 2 | 10 | 20
5 | 3 | Product2 | 3 | 10 | 30

我正在尝试生成如下所示的结果集。

order_id | item_id | name     | qty_ordered | base_price | row_total | order_total
1 | 1 | Product | 1 | 10 | 10 | 10
2 | 2 | Product | 1 | 10 | 10 | 20
null | 3 | Product2 | 1 | 10 | 10 | null
3 | 4 | Product | 2 | 10 | 20 | 50
null | 5 | Product2 | 3 | 10 | 30 | null

每个订单我只需要一次 order_id 和 order_total。我认为这可以通过某种 join/distinct/sub 查询来实现,但遗憾的是,到目前为止我所尝试的一切都没有奏效。

最佳答案

使用:

SELECT x.order_id,
x.item_id,
x.name,
x.qty_ordered,
x.base_price,
x.row_total,
x.order_total
FROM (SELECT CASE
WHEN @order = o.order_id THEN NULL
ELSE o.order_id
END AS order_id,
oi.item_id,
oi.name,
oi.qty_ordered,
oi.base_price,
oi.row_total,
o.order_total,
CASE
WHEN @order = o.order_id THEN NULL
ELSE o.order_total
END AS order_total,
@order := o.order_id
FROM ORDER_ITEMS oi
JOIN ORDERS o ON o.order_id = oi.order_id
JOIN (SELECT @order := -1) r
ORDER BY o.order_id, oi.item_id) x

关于mysql - 从 mysql 连接查询返回不同的空记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3445519/

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