我有一个带用户数据库的站点,我有三个简单的表:
- 用户
- user_profile(使用外部密钥:user_id到表用户)
- user_image_profile(使用外部密钥:user_id到表用户)
我想简单地选择使用外部密钥user_id连接这三个表。
进入我的数据库有三个用户,但是当我运行它时,检索我4个用户!比用户进入数据库多一个,重复用户是第一个。
每个用户都有一行进入表users,user_image_profile和user_profile 只有用户没有将该行放入user_image_profile。
我不明白为什么要给我4而不是3个用户。
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
答案 0 :(得分: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
答案 1 :(得分:-1)
添加查询
GROUP BY `users`.`id`