Sql 根据可能存在或不存在的记录的位值从链接表中检索数据

Sql 根据可能存在或不存在的记录的位值从链接表中检索数据,sql,Sql,我有两张桌子。用户表和照片表。如果用户上传照片,他们可以选择只指定一张作为“主要”个人资料照片(在前端强制) 例如,当我在用户搜索中查询用户列表时,我希望显示他们选择的主要照片。但是,如果photo表中没有链接的记录,或者有链接的记录,但是没有标记为primary,我仍然希望返回users记录,并且可能返回NULL或文件名的其他值 我将如何做到这一点 另外,我目前正在通过两个单独的数据库调用来实现这一点,但为了提高效率,我希望在一个调用中实现这一点。这取决于您使用的数据库的工作方式(userid

我有两张桌子。用户表和照片表。如果用户上传照片,他们可以选择只指定一张作为“主要”个人资料照片(在前端强制)

例如,当我在用户搜索中查询用户列表时,我希望显示他们选择的主要照片。但是,如果photo表中没有链接的记录,或者有链接的记录,但是没有标记为primary,我仍然希望返回users记录,并且可能返回NULL或文件名的其他值

我将如何做到这一点


另外,我目前正在通过两个单独的数据库调用来实现这一点,但为了提高效率,我希望在一个调用中实现这一点。

这取决于您使用的数据库的工作方式(
userid2query
是您要检索的用户的id):

select user_id , photo_id from tbl_users left join tbl_photos on tbl_users .user_id=tbl_users.user_id

它返回用户信息和主要照片信息-如果没有主要照片或根本没有照片,它仍会返回用户信息,但照片信息列返回NULL。

对不起,但我刚刚意识到,如果我不筛选用户id并获得多个用户,则未指定主要照片的每个用户,get的值与执行的值相同。换句话说,如果photo表中只有一条记录被标记为primary,那么结果集中的每个用户都会显示photo_id和file_name不要紧,在我复制和粘贴之后,事情变得有点混乱。一切又开始了!
select user_id , photo_id from tbl_users left join tbl_photos on tbl_users .user_id=tbl_users.user_id
SELECT u.user_id, u.username, p.photo_id, p.file_name 
from tbl_users u
left outer join tbl_photos p on u.user_id = p.user_id and p.is_primary = 1
where u.user_id = userid2query