gpt4 book ai didi

mysql - 是否有更好的方法来使用表 a 或表 b 中的值?

转载 作者:行者123 更新时间:2023-11-29 08:33:16 26 4
gpt4 key购买 nike

我有三个表:ordersuser_addressesalternate_addresses。用户总是有一个 user_address。订单具有 alternate_address_id,其中可能包含 alternate_address_idNULL

现在我的查询看起来像这样:

SELECT
IF(ISNULL(orders.alternate_address_id), a.firstname, u.firstname) AS firstname,
IF(ISNULL(orders.alternate_address_id), a.lastname, u.lastname) AS lastname
-- etc.
FROM orders
LEFT JOIN alternate_addresses a ON (
orders.alternate_address_id IS NOT NULL
AND orders.alternate_address_id = a.alternate_address_id)
LEFT JOIN user_addresses u ON (
orders.alternate_address_id IS NULL
AND orders.user_id = u.user_id)

对每个地址字段执行 IF(ISNULL()) 部分似乎有点多余,因为我知道在第一个地址之后需要使用哪个地址。

是否有更好的方法来做到这一点(我无法更改表格的设计)?

谢谢你的想法.

最佳答案

您真正的问题是 user_addressesalternate_addresses 是不同的表。因为它们是不同的表,所以很难让 SQL 统一处理它们。

如果有一个地址表,可以由用户和(可选)订单引用,那么您就可以设计一个 JOIN 条件,将每个订单连接到正确的地址,这会是更好的设计。

关于mysql - 是否有更好的方法来使用表 a 或表 b 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15966362/

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