gpt4 book ai didi

MySQL JOIN ON,如果列 x 不为空,否则列 y

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

我想加入我的产品表,同时抢订单。

我有一个 orders.product_id,它总是有一个值。

但情况是,如果 orders.bproduct_id 不为空,我们应该在

->join('products')->on('products.id', '=', 'dealsite_orders.product_id')

(我正在使用 Kohana 查询生成器,但我接受查询答案)

我该怎么做?

当我这样做时:

JOIN ON COALESCE(orders.bproduct_id,product_id)

它不返回任何行。经过调查我发现,这是因为它从 bproduct_id 中获取列值,即使它是 0?

最佳答案

您要查找的 on 表达式是这样的:

on products.id = coalesce(dealsite_orders.product_id, orders.product_id)

coalesce() 函数返回列列表中第一个不为空的值。我不确定您是想在 dealsite 列还是在 products 列上使用它。

请注意,使用 coalesce() 可能会阻止索引的使用。如果您的表很大,您可能需要重新制定查询以利用您的索引。

关于MySQL JOIN ON,如果列 x 不为空,否则列 y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20338648/

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