如果第二个表不存在连接,Mysql 使用一个表中的列值
Posted
技术标签:
【中文标题】如果第二个表不存在连接,Mysql 使用一个表中的列值【英文标题】:Mysql Use Column Value In One Table If Join Doesn't Exist To Second Table 【发布时间】:2018-06-20 19:54:49 【问题描述】:我正在尝试找到一种方法来返回以下示例中最喜欢的颜色。如果可能,在同一个查询中。
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 不起作用,那么它应该在通用别名“mostFavoriteColor”下从 TableA 返回“secondFavoriteColor”的值,并且输出表将是两列如果连接成功,则从 TableA 中提取“name”,如果连接失败,则从 TableB 中提取“mostFavoriteColor”。
关于这如何与相同的查询一起工作的任何想法?
【问题讨论】:
【参考方案1】:您需要在表 b 上进行左连接,因此如果在表 b 中找不到用户的行,它将返回 null,然后使用 COALESCE
选择第一个非空值
SELECT a.name, COALESCE(b.favoriteColor, a.secondFavoriteColor) mostFavoriteColor
FROM TableA a
LEFT JOIN TableB b ON a.id = b.userid
【讨论】:
以上是关于如果第二个表不存在连接,Mysql 使用一个表中的列值的主要内容,如果未能解决你的问题,请参考以下文章
如果一个表的列等于第二个表中的列,则在第三个表中插入值,python - mysql