我有一个表lists
,其中包含list_id
列,name
等。我有另一个表members
,其中包含user_id
列和list_id
列(对上有唯一索引(用户,列表))。
现在,我想生成一个三列输出:list_id
,name
,membership
,其中成员资格为0
或1
,具体取决于是或当前用户不是列表的成员(即该列表上有该用户的条目)。如果我做
SELECT
list_id, name, 1
FROM
lists
LEFT JOIN members ON (lists.list_id = members.list_id AND members.user_id=2)
我会为用户2获得正确的1行,但是0行将会消失。有一种很好的方法可以通过单个MySQL查询获得我想要的效果吗?
答案 0 :(得分:3)
我想你想要这样的东西:
SELECT list_id, name, (m.list_id is not null) as MemberOnList
FROM lists l LEFT JOIN
members m
ON l.list_id = m.list_id and
m.member_id = @CURRENTUSER;