这是我的查询:
SELECT
DISTINCT `c`.`user_id`,
`c`.`created_at`,
`c`.`body`,
(SELECT COUNT(*) FROM profiles_comments c2 WHERE c2.user_id = c.user_id AND c2.profile_id = 1) AS `comments_count`,
`u`.`username`,
`u`.`avatar_path`
FROM `profiles_comments` AS `c` INNER JOIN `users` AS `u` ON u.id = c.user_id
WHERE (c.profile_id = 1) ORDER BY `u`.`id` DESC;
Run Code Online (Sandbox Code Playgroud)
有用.但问题在于DISTINCT字.据我了解,它应该每个c.user_id只选择一行.
但我得到的甚至是4-5行,具有相同的c.user_id列.问题出在哪儿?
实际上,DISTINCT并不局限于1列,基本上当你说:
SELECT DISTINCT a,b
你所说的是,"给我一个明显的a和b组合值"......就像一个多列的UNIQUE索引
distinct将确保select子句中的所有值都是唯一的,而不仅仅是user_id.如果要将结果限制为单个user_id,则应按user_id分组.
也许你想要的是:
SELECT
`c`.`user_id`,
`u`.`username`,
`u`.`avatar_path`,
(SELECT COUNT(*) FROM profiles_comments c2 WHERE c2.user_id = c.user_id AND c2.profile_id = 1) AS `comments_count`
FROM `profiles_comments` AS `c` INNER JOIN `users` AS `u` ON u.id = c.user_id
WHERE (c.profile_id = 1)
GROUP BY `c`.`user_id`,
`u`.`username`,
`u`.`avatar_path`
ORDER BY `u`.`id` DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
384 次 |
| 最近记录: |