再选择一行SQL

时间:2013-06-14 09:59:15

标签: mysql sql

我有一个带用户数据库的站点,我有三个简单的表:
- 用户
- 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 

2 个答案:

答案 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`