为什么这个查询什么都不返回?

mik*_*ike 3 mysql sql

这个查询工作正常,但是如果用户在表"user_categories"中没有任何类别,我很难弄清楚为什么它不会返回任何内容?这是表结构:

用户:用户ID,用户名,用户城市

类别:类别ID,类别名称

user_categories:用户ID,类别ID

SELECT users.*, GROUP_CONCAT(categories.category_name) AS categories
FROM users
INNER JOIN user_categories ON users.user_id = user_categories.user_id
INNER JOIN categories ON user_categories.category_id = categories.category_id
WHERE users.user_city = 'brooklyn'
GROUP BY users.user_id
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

如果user_categories中的user_id不存在任何行,我只需要新列"类别"为空...

谢谢!

Sam*_*way 7

您使用了错误的连接类型 - 只有在两个表中都找到匹配项时,内连接才会成功.相反,您想尝试外连接.尝试这样的事情:

SELECT users.*, GROUP_CONCAT(categories.category_name) AS categories
FROM users
LEFT OUTER JOIN user_categories ON users.user_id = user_categories.user_id
LEFT OUTER JOIN categories ON user_categories.category_id = categories.category_id
WHERE users.user_city = 'brooklyn'
GROUP BY users.user_id
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

维基百科的SQL JOIN文章是可用的连接类型的一个相当不错的总结.