gpt4 book ai didi

MySQL 多重连接 if

转载 作者:行者123 更新时间:2023-11-29 16:15:18 25 4
gpt4 key购买 nike

这里是MySQL菜鸟。

所以我有一个像这样的主表TableA(ID int,TableBID int,TableCID int),我想要左连接TableA与TableB(ID int,Value1 int,AgeID int)和TableC(ID int,Value1 int,AgeID) int) 来获取 AgeID。

对于表 A,它仅具有 TableBID 或 TableCID 值。另一个将为 0。

最后,我想使用从 TableB 或 TableC 获取的 AgeID 并 left join Age (ID int, Age int) 来获取年龄。

我希望我最后得到的表格采用这种格式(TableA.ID,Age.age)

现在我的查询是

SELECT a.ID, age.age
FROM TableA AS a
LEFT JOIN TableB AS b ON a.TableBID = b.ID
LEFT JOIN TableC AS c ON a.TableCID = c.ID

然后我就陷入困境了。

任何帮助将不胜感激,谢谢!

最佳答案

您可以使用子查询使 AgeID 的来源透明:

select sub.ID, Age.age
from (
select a.ID as ID, if(a.TableBID, b.AgeID, c.AgeID) as AgeID
from TableA a
left join TableB b on a.TableBID = b.ID
left join TableC c on a.TableCID = c.ID
) sub
join Age on sub.AgeID = Age.ID

另一种选择是直接使用 OR 子句进行连接:

select a.ID as ID, Age.age
from TableA a
left join TableB b on a.TableBID = b.ID
left join TableC c on a.TableCID = c.ID
join Age on (
Age.ID = b.AgeID
or
Age.ID = c.AgeID
)

关于MySQL 多重连接 if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54871012/

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