繁体   English   中英

如何 select 唯一行后跟 MySQL 中值最高的行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM