SQLite关联三张表查询:如何获取图片及其所属用户信息?
解决方案:查询图片及其所属用户信息
这是个典型的多表关联查询场景,咱们可以通过JOIN语句把三个表串起来拿到需要的数据,直接上可用的SQL代码:
SELECT Pictures.name AS picture_name, Users.name AS user_name FROM Pictures JOIN Albums ON Pictures.ALBUM_ID = Albums.ID JOIN Users ON Albums.USER_ID = Users.ID;
代码说明:
- 我们通过两次关联把三个表串联起来:
- 第一次用
Pictures.ALBUM_ID = Albums.ID关联图片表和相册表,找到每张图片对应的相册 - 第二次用
Albums.USER_ID = Users.ID关联相册表和用户表,找到相册所属的用户
- 第一次用
- 使用
SELECT指定了最终需要的两个字段,并且通过AS给字段起了别名,让结果集的列名更直观(比如picture_name和user_name) - 这里用的
JOIN等价于INNER JOIN,只会返回三个表中能成功匹配的记录——也就是只有那些有对应相册、且相册有归属用户的图片才会被查询出来
特殊场景处理:
如果你的业务中存在没有对应相册的图片或者没有归属用户的相册(虽然按你的表结构设计应该不会出现这种情况),可以改用LEFT JOIN来保留所有图片记录,即使关联不到用户时也能显示图片信息:
SELECT Pictures.name AS picture_name, -- 用COALESCE把NULL替换成友好提示 COALESCE(Users.name, '无归属用户') AS user_name FROM Pictures LEFT JOIN Albums ON Pictures.ALBUM_ID = Albums.ID LEFT JOIN Users ON Albums.USER_ID = Users.ID;
内容的提问来源于stack exchange,提问作者DankMemesBot
相关产品推荐
相关产品推荐

