选择不是我的用户

时间:2019-01-16 20:04:03

标签: mysql sql

我有两个表Users和Games。

用户

users_id, profile_pic, username
1, rita.jpg, Rita
2, sue.jpg, Sue

游戏

games_id, player_1_users_id, player_2_users_id, status
1, 1, 2, 3

我正在尝试加入连接以返回没有我的users_id的用户的用户个人资料照片

因此,如果我是users_id 2,我希望SQL返回player_1的profile_pic,反之亦然。

到目前为止,我已经掌握了此功能,但目前还差一点,因为这显然只是返回了我的profile_pic,而不是其他用户:

SELECT  u.profile_pic
              FROM games g 
              JOIN users u ON (u.users_id = g.player_1_users_id OR u.users_id = g.player_2_users_id)
              WHERE 
              (player_1_users_id = 2 OR player_2_users_id = 2) AND
              g.status = 3

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:3)

左两次加入用户,并在ON子句中包括ID 2的排除。使用NULL获取不是coalesce()的个人资料图片。

SELECT g.games_id,
       coalesce(u1.profile_pic,
                u2.profile_pic) profile_pic
       FROM games g
            LEFT JOIN users u1
                      ON u1.users_id = g.player_1_users_id
                         AND g.player_1_users_id <> 2
            LEFT JOIN users u2
                      ON u2.users_id = g.player_2_users_id
                         AND g.player_2_users_id <> 2
       WHERE 2 IN (g.player_1_users_id,
                   g.player_2_users_id)
             AND g.status = 3;

db<>fiddle