【问题标题】:Mysql Use Column Value In One Table If Join Doesn't Exist To Second Table如果第二个表不存在连接,Mysql 使用一个表中的列值
【发布时间】: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”。

关于这如何与相同的查询一起工作的任何想法?

【问题讨论】:

    标签: mysql


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多