我有一个数据库,用户必须在其中有一个用户名,而在另一个表上有一个由每个用户赋予他们的可选contact_name。

例如:


  用户A可能将用户B称为“ FOO”
  
  但是用户C称用户B为“ BAR”
  
  并且用户D可能没有给用户B一个contact_name
  
  因此它应该返回NULL。


下面的查询可以使我获得所有用户名和contact_names,即使将其作为NULL也是理想的结果。

SELECT Login.username, PhoneNumber.phone, AddressBook.contact_name FROM Login
LEFT OUTER JOIN PhoneNumber ON Login.id = PhoneNumber.user_id
LEFT OUTER JOIN AddressBook ON PhoneNumber.phone = AddressBook.phone


但是,我只想返回WHERE AddressBook.user_id = 67,它将返回与用户A关联的用户名和contact_names。

当前,当我添加WHERE AddressBook.user_id = 67时,它不会返回任何带有NULL值的contact_names,但是我需要那些具有NULL且没有NULL contact_names的行。

我该怎么办?

谢谢

最佳答案

如何将AddressBook.user_id = 67添加到JOIN

SELECT l.username, p.phone, a.contact_name
FROM Login l
LEFT OUTER JOIN PhoneNumber p ON l.id = p.user_id
LEFT OUTER JOIN AddressBook a ON p.phone = a.phone AND a.user_id = 67

10-08 13:54