SQL Join用于检索单个用户的记录

时间:2012-10-12 08:17:42

标签: mysql sql join

我将用户相关信息拆分为多个表。我正在尝试编写一个连接来检索单个用户的数据,很多信息都是可选的,因此许多列的条目可能为null,这是可以的。我编写了以下查询,它正在工作,但是当我想要id为'69'的用户时它会返回所有用户

SELECT cur_doctor_names.First_Name, cur_doctor_Names.Last_Name, w.Website
FROM cur_doctor_names
LEFT JOIN (

SELECT *
FROM cur_website
WHERE Userid =69
) AS w ON cur_doctor_names.UserId = w.Userid

我想要以下结果:

First_Name | Last Name | Website 
ABC          XYZ         Null    

其中ABC是id为69的用户的名称。

3 个答案:

答案 0 :(得分:2)

您只是过滤网站,因为您使用的是左连接。您应该将过滤器应用于医生表

SELECT 
    cur_doctor_names.First_Name, 
    cur_doctor_Names.Last_Name, 
    w.Website 
FROM 
    cur_doctor_names 
        LEFT JOIN cur_website AS w 
        ON cur_doctor_names.UserId = w.Userid 
WHERE     
    cur_doctor_names.UserId = 69

答案 1 :(得分:2)

尝试这样写 - 你的where子句在错误的位置(你的左连接也不需要这样写):

SELECT cur_doctor_names.First_Name, cur_doctor_Names.Last_Name, w.Website
FROM cur_doctor_names
  LEFT JOIN cur_website as w
  ON cur_doctor_names.UserId = w.Userid
WHERE cur_doctor_names.userId = 69

答案 2 :(得分:1)

我想你可以写

SELECT cur_doctor_names.First_Name, cur_doctor_Names.Last_Name, w.Website
FROM cur_doctor_names
LEFT JOIN cur_website w ON cur_doctor_names.UserId = w.Userid
WHERE Userid =69