gpt4 book ai didi

MySQL更改LEFT JOIN表达式中的列

转载 作者:行者123 更新时间:2023-11-29 12:37:46 24 4
gpt4 key购买 nike

我尝试根据其值使用不同的列。如果 A 列为空,则使用 B 列。问题是,这是在 LEFT JOIN 表达式内:

SELECT *
FROM
novinarji
LEFT JOIN naslovi ON novinarji.stalniNaslovId=naslovi.id
LEFT JOIN posta ON naslovi.postaId=posta.id
WHERE
posta.stPoste = 3000

当第一列为 NULL 时,我需要将 novinarji.stalniNaslovId 更改为 novinarji.zacasniNaslovId

我希望这足够清楚。

谢谢!

最佳答案

您不一定需要在连接 ON 条件中使用 onyl 文字列名称。连接的 ON 条件需要产生真实的 bool 表达式。因此,您可以使用 COALESCE()在连接条件中返回首选列或备用列(如果首选列为 NULL)。

-- Careful with SELECT * in a join query...
-- better to be specific about the needed column names
SELECT *
FROM
novinarji
-- COALESCE() will return stalniNaslovId if non-null, and zacasniNaslovId otherwise
LEFT JOIN naslovi
ON COALESCE(novinarji.stalniNaslovId, novinarji.zacasniNaslovId) = naslovi.id
LEFT JOIN posta
ON naslovi.postaId=posta.id
-- Move this condition to the ON clause, otherwise it turns
-- your LEFT JOIN into an INNER JOIN if filtered in the WHERE
AND post.stPoste = 3000

关于MySQL更改LEFT JOIN表达式中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26515419/

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