mysql左连接和查询,其中where子句只显示1行

时间:2012-07-02 12:14:45

标签: mysql left-join

由于我正在制作一个简单的论坛,其中包括跟随者和跟随者的推特,我有以下表格。

users

 1. id
 2. name

questions

 1. id
 2. description
 3. user_id//foreign key of users.id

answers

 1. id
 2. question_id//foreign key of questions.id
 3. description
 4. user_id//foreign key of users.id

follow

 1. from_user(which user)//foreign key of users.id
 2. to_user(following to which user)//foreign key of users.id

我的查询如下

SELECT users.id, users.name, count(DISTINCT questions.id), count(answers questions.id), count(follow1.from_user), count(follow2.to_user) from users LEFT JOIN questions ON users.id = questions.user_id LEFT JOIN answers ON users.id = answers.user_id LEFT JOIN follow as follow1 ON users.id = follow1.from_user LEFT JOIN follow as follow2 ON users.id = follow2.to_user WHERE users.id = 1

这样可以正常工作并给出正确的结果。

但是当我使用相同的查询时,我将WHERE IN的子句放在如下

SELECT users.id, users.name, count(DISTINCT questions.id), count(answers questions.id), count(follow1.from_user), count(follow2.to_user) from users LEFT JOIN questions ON users.id = questions.user_id LEFT JOIN answers ON users.id = answers.user_id LEFT JOIN follow as follow1 ON users.id = follow1.from_user LEFT JOIN follow as follow2 ON users.id = follow2.to_user WHERE users.id IN (1, 3)

它仅显示用户ID的记录1.不适用于3.但是,讨论上一个查询对id's都适用,并显示正确的记录。

1 个答案:

答案 0 :(得分:1)

这是一个奇怪的,我只能建议使用GROUP BY users.id,以便mysql不会将count()组合在所有记录上。希望以某种方式帮助。

相关问题