Mysql查询帮助。我需要确保至少返回一条记录

标签 mysql sql

我有一个查询,我知道它至少应该返回一行。我如何修改我的关注查询以确保相册返回数据。感谢您的帮助。

在这里查询。我知道相册有一行,我需要将其归还。

    select distinct p.*,
 a.ID as parentalbumid,a.CreatorID as albumcreatorid,a.AlbumName,a.AlbumDescription,a.AlbumDefaultImageURL,a.Private,a.DateCreated,a.AdultContent,a.PasswordProtected,a.AllowTags,a.TypeID,a.AlbumAutoID,
 mainuser.Username as mainuserusername,mainuser.ID as mainuserid,mainuser.PictureUrl as mainuserpictureurl,
c.ID as commentID,c.PhotoID as commentphotoid,c.OutputMessage,c.CommentDate,
t.ID as tagID,t.PhotoID as tagphotoid,t.UserID,t.TextTag,t.LeftLocation,t.TopLocation,
u.ID as userid,u.Username,u.FirstName,u.LastName,u.PictureUrl
from photos p
inner join albums a on a.ID = p.AlbumID
inner join users mainuser on mainuser.ID = p.UserID
left join comments c on c.PhotoID = p.ID
left join tags t on t.PhotoID = p.ID 
left join users u on u.ID = c.CommentBy
where a.AlbumAutoID = 3
order by p.DateUploaded desc;

最佳答案

仅使用LEFT JOIN(并将表albums作为FROM的第一个表):

select distinct p.*,
 a.ID as parentalbumid,a.CreatorID as albumcreatorid,a.AlbumName,a.AlbumDescription,a.AlbumDefaultImageURL,a.Private,a.DateCreated,a.AdultContent,a.PasswordProtected,a.AllowTags,a.TypeID,a.AlbumAutoID,
 mainuser.Username as mainuserusername,mainuser.ID as mainuserid,mainuser.PictureUrl as mainuserpictureurl,
c.ID as commentID,c.PhotoID as commentphotoid,c.OutputMessage,c.CommentDate,
t.ID as tagID,t.PhotoID as tagphotoid,t.UserID,t.TextTag,t.LeftLocation,t.TopLocation,
u.ID as userid,u.Username,u.FirstName,u.LastName,u.PictureUrl
from albums a
left join photos p on a.ID = p.AlbumID
left join users mainuser on mainuser.ID = p.UserID
left join comments c on c.PhotoID = p.ID
left join tags t on t.PhotoID = p.ID 
left join users u on u.ID = c.CommentBy
where a.AlbumAutoID = 3
order by p.DateUploaded desc;

关于Mysql查询帮助。我需要确保至少返回一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9846272/

相关文章:

php - 使用 Laravel Query 计算两列的值

c# - 如何在不实际安装连接器的情况下通过 C# 使用 mysql 连接器连接到 mysql

sql - mysql更快的匹配内部字符串的方法

mysql - 超过 5 个表的 SQL 左连接

sql - 删除sql数据库的bat文件

php - 将每个数据库行插入不同的表行中?

mysql - sql查询列出经理管理的员 worker 数

java - Spring外键无限循环

mysql - 获取具有公共(public)列值的行值的 SQL 语法

sql - 数据透视查询中的 CSV 值