0

我将用户相关信息拆分为多个表。我正在尝试编写一个连接来检索单个用户的数据,很多信息是可选的,因此许多列的条目可能为空,这没关系。我已经编写了以下查询,它正在工作,除了当我想要 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 的用户的名称。

4

3 回答 3

2

You are only filtering the websites because you are using a left join. You should apply your filter to the doctors table

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
于 2012-10-12T08:20:25.733 回答
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
于 2012-10-12T08:21:07.227 回答
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
于 2012-10-12T08:21:23.267 回答