SQL查询从两个表中选择匹配和不存在的值

时间:2015-06-01 21:37:29

标签: mysql sql select

我有两个MySQL表:

user(id, name)
cards(id, number, user_id)

我需要形成一个查询,允许在页面上显示哪些用户所拥有或哪些用户所拥有的卡(user_name - card_number)

备注

  1. 一张卡只能链接到单个用户
  2. 一个用户可以拥有多张卡
  3. 我还需要显示尚未链接到任何用户的卡片(因此用户名将为“NONE”),其card_id中的user_id = 0
  4. 我试过了:

    SELECT c.id, c.number, u.name FROM card AS c, user AS u WHERE c.user_id=u.id
    

    这允许我选择与用户链接的卡

    但是我仍然有问题如何添加user_id = 0的卡片(请记住我需要为这种情况设置用户名的'NONE'值。)

    更新:用户表中没有用户ID = 0

1 个答案:

答案 0 :(得分:1)

使用LEFT JOIN。当第一个表没有任何匹配的行时,这将为连接表中的列返回NULL

SELECT c.id, c.number, IFNULL(u.name, "not linked") AS name
FROM card AS c
LEFT JOIN user as U ON c.user_id = u.id