这可以在单个SQL查询中完成吗?

时间:2014-08-18 21:48:23

标签: mysql sql

我有一个表lists,其中包含list_id列,name等。我有另一个表members,其中包含user_id列和list_id列(对上有唯一索引(用户,列表))。

现在,我想生成一个三列输出:list_idnamemembership,其中成员资格为01,具体取决于是或当前用户不是列表的成员(即该列表上有该用户的条目)。如果我做

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查询获得我想要的效果吗?

1 个答案:

答案 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;