LEFT JOIN查询中的重复内容+在连接表上获取计数

时间:2013-02-17 22:23:45

标签: mysql left-join inner-join

我正在尝试使用类似的ID连接两个表,然后获得两个字段的总和。让我解释一下:

测试表: id |发布| desc |日期

likes_dislikes table: id | song_id | user_ip |像|不喜欢

在测试'测试表'上,'id'与likes_dislikes'song_id'匹配,所以我尝试了LEFT JOIN,因为不是每个帖子都会在likes_dislikes表中有一个id,但我得到了重复的结果。

SELECT *
FROM
  test
  LEFT JOIN likes_dislikes ON test.song_id = likes_dislikes.page_id
GROUP BY test.song_id
ORDER BY test.id DESC LIMIT $start, $limit

我如何防止重复内容,并且在我通过while循环时获得与每个帖子相关的TOTAL喜欢/不喜欢?

1 个答案:

答案 0 :(得分:1)

我假设你正在寻找这样的东西:

SELECT
    T.`id`,
    T.`post`,
    T.`desc`,
    T.`Date`,
    COUNT(L.`like`) as `LikeCount`,
    COUNT(L.`dislike`) as `DislikeCount`
FROM `test` T
    LEFT JOIN `likes_dislikes` L
       ON T.`Id` = L.`song_id`
GROUP BY T.`Id`, T.`post`, T.`desc`, T.`Date`
ORDER BY T.`id` DESC;