mysql - MySQL在表连接之间添加结果列
问题描述
我有一个查询,它结合了两个表中的列,如下所示:
SELECT UR.recordId, UR.userName, UN.note
FROM userRecords UR
RIGHT JOIN (
SELECT UR2.recordId
FROM userRecords UR2
WHERE userId = 17
) AS URX USING (recordId)
LEFT JOIN userNotes UN USING(recordId);
这会生成一个结果集,其中“userNotes”表中的每条记录都有一行,它与“userRecords”表中的 recordId 相同,如下所示:
--------------------------------------------------
| recordId | userName | note |
--------------------------------------------------
| 17 | Rob S | apples |
| 17 | Rob S | oranges |
| 17 | Rob S | grapes |
--------------------------------------------------
这是所需的输出。但是,我现在想在 userName 和 note 列之间添加一个名为“hasPhotos”的列,这将指示“userPhotos”表中是否有任何记录也具有相同的 recordId (17)。
'userPhotos' 表可以包含 0 到 N 条具有匹配 recordId 的记录,就像 userNotes 表一样。但是,如果没有匹配的记录,我希望“hasPhotos”列简单地表示“false”,如果有 1 个或多个匹配项,则表示“true”。我也不希望结果集中的行数根据“userPhotos”表中的记录数增加。总行数仍应与“userNotes”表中的记录数相匹配。
因此,如果没有匹配的照片记录,它应该如下所示:
--------------------------------------------------
| recordId | userName | hasPhotos | note |
--------------------------------------------------
| 17 | Rob S | false | apples |
| 17 | Rob S | false | oranges |
| 17 | Rob S | false | grapes |
--------------------------------------------------
如果有 1 个或多个匹配的照片记录,它应该如下所示:
--------------------------------------------------
| recordId | userName | hasPhotos | note |
--------------------------------------------------
| 17 | Rob S | true | apples |
| 17 | Rob S | true | oranges |
| 17 | Rob S | true | grapes |
--------------------------------------------------
谁能帮助我如何调整我的查询来完成这个?我尝试了各种方法,但得到了不希望的结果,例如根据匹配的照片记录增加行数......
提前致谢!
解决方案
下面是查询 -
SELECT UR.recordId, UR.userName, case when UP.recordId is null then false else true , UN.note
FROM userRecords UR
RIGHT JOIN (
SELECT UR2.recordId
FROM userRecords UR2
WHERE userId = 17
) AS URX USING (recordId)
LEFT JOIN userNotes UN USING(recordId)
left join (select distinct recordId from userPhotos) UP on UR.recordId=UP.recordId
推荐阅读
- android - 未删除令牌类型 Int 或 Long (*Kotlin) 的 Android 处理程序回调
- python - 从python中的数组中选择一个随机单词
- c# - 计算数组中每个元素的快速排序时间
- sql - 有一个嵌套的项目 ID 和所有者 ID,找出该项目是否属于该所有者
- jsf - p:具有动态和非动态子菜单的菜单栏
- asp.net - 部署新应用版本后,Http Headers 被清除
- spring - BeanPostProcessor 无法处理 bean RedisProperties
- jquery - 按键/点击的性能
- lua - 有没有办法自省 Lua 中的函数?
- node.js - 我们如何只允许 .onmicrosoft.com 的 Microsoft 单点登录?