sql - 如何在一个请求中获取用户及其所有图像?
问题描述
我有一个拥有 has_many images 连接表的用户。
我知道我可以做一个:
select *
from user,
image
join user_images on...
where user_id = 'some_id'
这将在一个请求中为我提供数据,但是每个图像行都将复制其中的所有用户数据。
user_name, address, phone, image_1, image_1_path
user_name, address, phone, image_2, image_2_path
....
有没有办法在一个查询中做到这一点而没有任何数据重复?
我想一个理想的数据响应应该是这样的:
我想理想的是这样的回应:
user_name, address, phone
image_1, image_1_path
image_2, image_2_path
...<more unique images>
解决方案
据我了解,您希望看到空白user_name
,address
以及phone
同一用户是否有多个图像。您可以ROW_NUMBER
在以下情况下使用:
select
case when rn > 1 then '' else user_name end as user_name,
case when rn > 1 then '' else address end as address,
case when rn > 1 then '' else phone end as phone,
image,
image_path
from (
select *, row_number() over(partition by user_name, address, phone order by user_name) rn
from user
join user_images on...
where user_id = 'some_id'
) x
推荐阅读
- android - 升级到6.2.3版本后报“找不到类”com.appsflyer.AppsFlyerLib”错误
- optimization - 混合整数规划 - 在资源分配问题中写入约束的问题
- python - 在python中选择唯一且最相关的数据
- javascript - 用 google api 错误 popup_closed_by_user 反应社交登录问题
- xml - XPath 命令获取具有另一个元素(不是属性)条件的元素
- excel - 下拉列表中具有许多条件的 COUNTIFS
- .net - 如何将参数传递给 Nuget 包
- css - Blogger 主页上的表格边框搞砸了
- angular - 如何使用角度为 10 或 11 的 ng-pick-datetime-moment?
- node.js - 云函数:传递给 tf.browser.fromPixels() 的像素必须是 HTMLVideoElement