gpt4 book ai didi

mysql - 是否可以将此业务逻辑放在 SQL 查询中?

转载 作者:行者123 更新时间:2023-11-29 04:51:13 25 4
gpt4 key购买 nike

我有一个 mySQL 表,其中包含一组引用数据。我有另一个表,其中包含描述此引用数据的更新或附加条目的数据。由于各种原因,我不会深入探讨,重要的是引用数据在特定用户出现并创建记录时保持不变(因此是第二个表)。除了具有 2 键复合主键的“自定义”表之外,这些表之间的模式相同。其中一列在“自定义”表和引用表之间共享。

我想在这些表上用单个 SQL 语句执行的业务逻辑如下:

如果“自定义”表中存在与引用表中的键值相同的记录,则采用“自定义”。否则取引用值。

我想也许我可以使用 RIGHT JOIN,或者甚至可以对 UNION 运算符进行一些改动来控制返回的内容。不过,我一直在扰乱 SQL 的逻辑。 JOIN 将从一个表中获取信息以与另一个表连接,我真的不想要。 UNION 将简单地删除表之间的重复项....这很接近。

类似于:

SELECT * FROM 自定义 UNION SELECT * FROM 引用

除此之外,如果所有列都相同,则只会删除重复项。如果有任何不同(因为这就是自定义条目存在的原因),那么 UNION 只会将两个表的内容合并在一起。

我是不是做错了?

感谢您提供的任何见解。

最佳答案

有几种方法可以做到这一点。至少根据我对你的情况的解释,这是一个应该得到你需要的东西的工会:

select KeyCol, Col2, Col3
from CustomTable
union all
select KeyCol, Col2, Col3
from RefTable
where KeyCol not in (select KeyCol from CustomTable)

我假设您的 RefTable 和 CustomTable 具有一对零或一的关系,例如,您没有任何 Ref 的多个自定义记录(但这仍然适用于任何一种方式)。

更新:

您可能还需要自定义的额外键列:

select KeyCol, Col2, Col3, CustomKey
from CustomTable
union all
select KeyCol, Col2, Col3, null as CustomKey
from RefTable
where KeyCol not in (select KeyCol from CustomTable)

关于mysql - 是否可以将此业务逻辑放在 SQL 查询中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11460071/

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