gpt4 book ai didi

sql - 使用嵌套的 IFNULL 沿互斥路径检查表?

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:48 25 4
gpt4 key购买 nike

我有一个字段可能在三个不同的表中。第一张表是存档;尽管存档应该随着字段的变化而更新,但这种情况不会发生的可能性不为零。因此,我想搜索其他两个表,其中该字段是互斥的(从第二个表连接到第三个表后清除)。

在我对这些表一起使用外连接后的最终选择语句中,我想通过实现这样的选择语句来解决这个问题:

SELECT Field IFNULL(Table2, IFNULL(Table3, Table1))

第二个 IFNULL 的目的是,如果由于某种原因它由于错误而没有出现,存档可能会有信息(表明存在问题)。

对于我所缺少的这个问题,是否有更优雅的解决方案?我对 SQL 比较陌生,因此对最佳实践不是很熟悉。我认为由于已经加入表 1、2 和 3,此功能不会占用大量资源,但我并不肯定。

这个字段也是用来连接表的,如果它不在那个表中,按照我的查询条件,那个表上就不存在记录。我的计划是将它用于几个不同的领域。

这最终将出现在用于在前端实现搜索功能的参数化准备语句中。

最佳答案

COALESCE() 比嵌套的 IFNULL() 更优雅:

SELECT COALESCE(Table2.field, Table3.field, Table1.field) as Field

这可能是最好的方法,假设 field 永远不会 NULL。如果这是一个有效值,那么逻辑可能会更麻烦一些。

关于sql - 使用嵌套的 IFNULL 沿互斥路径检查表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51026380/

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