mysql - 如何在自我内连接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
解决方案
如果没有这样的子选择,你就不能这样做吗?
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
推荐阅读
- c++ - 用c ++分块将蒸汽写入磁盘
- java - Exo 球员活动
- javascript - 我有一个字符数组,我想使用 javascript 在 html 中以 4 行显示名称、房屋和图像。我要学习吗?
- mongodb - 有没有办法给 MongoDB 聚合的结果提供 order 字段?
- javascript - 无法在 onUploadProgress 事件中访问 data() (axios)
- c# - 计时器在长事件期间不启动
- java - 我正在尝试使用多个 if..else 但我在案例中输入的命令无法按预期工作
- javascript - 如何从数组列表中获取多个随机元素?
- momentjs - 时刻时区格式为本地,返回“Fecha inválida”无效
- python-3.x - 转换为 str 时如何解决 UnicodeEncodeError