我正在尝试找到一种方法来返回以下示例中发现的最喜欢的颜色。如果可能,在同一查询中。
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中以通用别名“ mostFavoriteColor”返回“ secondFavoriteColor”的值,并且输出表将是两列,如果成功加入了TableB,则从TableA中提取“名称”,然后从TableB中提取“ mostFavoriteColor”,或者如果连接失败,则从TableA中提取。
关于在同一查询中如何使用它的任何想法?
答案 0 :(得分:2)
您需要在表b上进行左连接,因此,如果在表b中找不到用户的行,它将返回null,然后使用COALESCE
选择第一个非null值
SELECT a.name, COALESCE(b.favoriteColor, a.secondFavoriteColor) mostFavoriteColor
FROM TableA a
LEFT JOIN TableB b ON a.id = b.userid