首页 > 数据库 > mysql教程 > 如何在单个 SQL SELECT 语句中同时使用 DISTINCT 和 ORDER BY?

如何在单个 SQL SELECT 语句中同时使用 DISTINCT 和 ORDER BY?

Susan Sarandon
发布: 2025-01-07 09:16:41
原创
342 人浏览过

How Can I Use DISTINCT and ORDER BY Together in a Single SQL SELECT Statement?

在单个 SELECT 语句中使用 DISTINCT 和 ORDER BY

使用 SQL 查询时,可能需要使用 DISTINCT 删除重复值并使用对结果进行排序订购依据。但是,尝试在单个语句中一起使用这些子句可能会导致意外行为。本文将解决这个问题,并提供一个解决方案来正确实现过滤和排序。

问题陈述

考虑以下查询:

SELECT Category FROM MonitoringJob ORDER BY CreationDate DESC;
登录后复制

此查询将返回结果按 CreationDate 列降序排列。但是,如果类别列中存在重复值,则不会将其删除。

要删除重复项,可以尝试使用 DISTINCT 关键字:

SELECT DISTINCT Category FROM MonitoringJob ORDER BY CreationDate DESC;
登录后复制

但是,此查询将失败并出现错误,因为当 DISTINCT 为时,非聚合列上不允许 ORDER BY

解决方案

要解决此问题,请使用聚合函数和 GROUP BY 子句按类别列对结果进行分组。这将允许 DISTINCT 关键字删除重复的类别值,同时仍允许 ORDER BY 子句按 CreationDate 列对结果进行排序。

SELECT DISTINCT Category, MAX(CreationDate) 
FROM MonitoringJob 
GROUP BY Category 
ORDER BY MAX(CreationDate) DESC, Category;
登录后复制

在此查询中:

  • MAX (CreationDate) 是聚合函数,用于按每个的最新 CreationDate 对结果进行排序类别。
  • GROUP BY Category 按类别列对结果进行分组,允许 DISTINCT 删除重复的类别值。
  • ORDER BY MAX(CreationDate) DESC,类别首先按最新的 CreationDate 对结果进行排序在每个类别中,然后按类别名称的字母顺序排列。

以上是如何在单个 SQL SELECT 语句中同时使用 DISTINCT 和 ORDER BY?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板