gpt4 book ai didi

MySQL Select 基于条件选择

转载 作者:行者123 更新时间:2023-11-29 00:31:38 26 4
gpt4 key购买 nike

我设置了我的结构,以便任何条目都可以包含对另一个条目的引用以填充缺失的详细信息。

ID,  NAME, DESCRIPTION, REFERENCE
0, Stuff, Things, -1
1, , , 0
2, Things, Stuff, -1

我希望能够返回表的所有结果,如果一个条目需要引用另一个条目来完成数据,则用数据填充引用字段。我还想保留引用字段的原始 ID。我还希望保留不需要引用的字段。

SELECT `ID`, `REFERENCE` FROM `details` as `t`
IF `REFERENCE` != -1 THEN
SELECT *, `t`.`REFERENCE` as `ORIGINAL_ID` FROM `details` WHERE `ID` = `t`.`REFERENCE`
ELSE
SELECT * FROM `details` WHERE `ID` = `t`.`ID`

显然这行不通,但我只是想向您展示我认为我想要的东西。这可能吗?感谢阅读。

最佳答案

你可以通过这样的方式接近:

SELECT
t.ID,
t.Reference,
COALESCE(reffed.Name, t.name) AS name,
COALESCE(reffed.whatever, t.whatever) AS whatever,
COALESCE(... and so on ...)
FROM details t
LEFT OUTER JOIN details reffed ON t.Reference = reffed.id

如果存在引用值,由于 COALESCE,它将优先于“基本”值。

如果 Reference = -1 或者如果 Reference 没有指向有效的 id 引用的值将为 null 所以 COALESCE 将返回“基础”值(t.whatever 而不是 reffed.whatever)。

请注意,这假设您没有 details.id = -1 的实际行。

关于MySQL Select 基于条件选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16238281/

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