首页 > 解决方案 > 如何在自我内连接mysql查询中选择不同的值?

问题描述

这个 mysql 查询从评论中选择最大值,但 insId 是重复的,但我想得到没有重复的 insId。

SELECT reviews.id, reviews_max.insId, reviews_max.maxAvgRating
FROM 
(
    SELECT insId, MAX(avgRating) AS maxAvgRating
    FROM reviews
    WHERE status = '1'
    GROUP BY insId
) AS reviews_max 
INNER JOIN reviews
    ON reviews.insId = reviews_max.insId AND
       reviews.avgRating = reviews_max.maxAvgRating

标签: mysql

解决方案


如果没有这样的子选择,你就不能这样做吗?

SELECT MAX(reviews.id) as id, MAX(reviews.insId), MAX(reviews.avgRating) AS maxAvgRating
FROM reviews
WHERE status = 1
GROUP BY reviews.id, reviews.insId

如果您愿意,您仍然可以将 id 复制为 insId,但该值应该已经在 id 字段中。

我使用 SQLFiddle 创建了一个快速示例:http ://sqlfiddle.com/#!9/5b6421/2/0


推荐阅读