3

我有一个带有用户数据库的站点,我有三个简单的表:
- 用户
- user_profile (使用外部键:user_id 到表用户)
- user_image_profile (使用外部键:user_id 到表用户)

我想简单地选择使用外部键 user_id 连接这三个表。

进入我的数据库有 3 个用户,但是当我运行它时检索到 4 个用户!比数据库中的用户多一个,重复的用户是第一个。

每个用户在表用户、user_image_profile 和 user_profile 中都有一行。只有一个用户在 user_image_profile 中没有该行。

我不明白为什么返回我 4 而不是三个用户。

SELECT *, `users`.`id` as user_id
FROM (`users`)
LEFT JOIN `user_profile` ON `user_profile`.`user_id` = `users`.`id`
LEFT JOIN `user_image_profile` ON `user_image_profile`.`user_id` = `users`.`id`
ORDER BY `users`.`created` desc LIMIT 12 
4

2 回答 2

1

我认为您需要一个INNER JOIN而不是LEFT JOIN查询

SELECT *, `users`.`id` as user_id 
FROM (`users`) 
INNER JOIN `user_profile` 
ON `user_profile`.`user_id` = `users`.`id` 
INNER JOIN `user_image_profile` 
ON `user_image_profile`.`user_id` = `users`.`id` 
ORDER BY  `users`.`created` desc LIMIT 12 
于 2013-06-14T10:01:00.197 回答
-1

添加查询

GROUP BY `users`.`id`
于 2013-06-14T10:21:40.213 回答