假设我有两个表:users
和user_location_data
。我需要获取users
内的所有记录,并将其与user_location_data
中的匹配数据(如果存在)相关联 - 但如果不存在则仍然获取用户数据。示例输出:
User ID | Name | Location Data
--------|----------|--------------------------
2 | John |
3 | Jane | Lorem Ipsum
6 | Harry |
9 | Lloyd | Lorem Ipsum
22 | Patricia | Lorem Ipsum
这可以通过简单的循环和多个查询轻松完成,但这似乎对我来说有点不安。常规关系查询(例如SELECT * FROM users u, user_location_data uld WHERE u.user_id = uld.user_id
)将仅获取具有匹配位置数据记录的用户。有什么方法可以用一个查询来做到这一点吗?
答案 0 :(得分:4)
使用LEFT JOIN
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
SELECT * FROM users u LEFT JOIN user_location_data uld ON u.user_id = uld.user_id