![](/img/trans.png)
[英]MySQL select unique rows in two columns with the highest value in one column
[英]How to select unique rows followed by row with highest value in MySQL?
我有一个 MySQL 数据库表,其中包含有关地点的信息。 我正在尝试获取所有唯一类别,然后是评分最高的地方,但服务器返回的结果似乎并不准确。
在一个类别的数据库中,得分为 100 的记录很少,但 MySQL 将 select 例如得分为 95 的记录。
这是一个查询:
SELECT category, score, title
FROM places
WHERE active = '1'
GROUP BY category
ORDER BY score DESC
是否可以在单个查询中做到这一点?
更新
我已经按照建议使用 MySQL function MAX() 重写了我的查询,但是返回的结果仍然错误
这是新查询的示例
SELECT category, MAX(score) AS maxScore, title, score AS realScore
FROM places
WHERE active = '1'
GROUP BY category
ORDER BY score DESC
SELECT category, MAX(score) max_score
FROM places
WHERE active = 1
GROUP BY category
ORDER BY max_score DESC, RAND()
SELECT category
, MAX(score) AS maxScore
FROM places
WHERE active = '1'
GROUP BY category
如果您还想要其他字段,除了category
和(最大) score
,您可以使用子查询:
SELECT p.category
, p.score
, p.title
, p.otherfield
, ...
FROM
places AS p
JOIN
( SELECT category
, MAX(score) AS maxScore
FROM places
WHERE active = '1'
GROUP BY category
) AS grp
ON grp.category = p.category
AND grp.maxscore = p.score
WHERE p.active = '1'
ORDER BY maxScore DESC
正如@zekms 指出的那样,如果有几行具有相同的类别和最高分数,这将产生多行(具有相同的类别)。
尝试这个:
SELECT category, max(score)...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.