gpt4 book ai didi

如果连接不存在到第二个表,则Mysql使用一个表中的列值

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

我试图找到一种方法来返回在以下示例中找到的最喜欢的颜色。如果可能,在同一个查询中。

TableA

id | name | secondFavoriteColor
-----------------------
0 | john | blue
1 | sam | red

TableB

id | userid | favoriteColor
----------------------------
0 | 1 | orange


SELECT TableA.name, [[mostFavoriteColor]] FROM TableA JOIN TableB ON TableA.id = TableB.userid

这应该返回

name | mostFavoriteColor
-------------------------
john | blue
sam | orange

基本上,TableA 将在“secondFavoriteColor”列中包含一个默认值,而 TableB 将包含实际的收藏夹(如果每个用户都存在)。 TableB 并不总是有每个用户的记录,但是如果 JOIN 不起作用,那么它应该从 TableA 的公共(public)别名“mostFavoriteColor”下返回“secondFavoriteColor”的值,并且输出表将是两列如果成功加入,则来自 TableA 的“name”和从 TableB 中提取的“mostFavoriteColor”,如果加入失败则从 TableA 中提取。

关于如何使用相同的查询有什么想法吗?

最佳答案

你需要在表 b 上进行左连接,所以如果在表 b 中没有找到用户的行,它将返回空值,然后使用 COALESCE 来选择第一个非空值

SELECT a.name, COALESCE(b.favoriteColor, a.secondFavoriteColor) mostFavoriteColor
FROM TableA a
LEFT JOIN TableB b ON a.id = b.userid

关于如果连接不存在到第二个表,则Mysql使用一个表中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50956094/

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