如何在同一 SELECT 语句中使用 DISTINCT 和 ORDER BY
执行的查询通常会返回重复数据,并使用 ORDER BY 对数据进行排序仅凭这一点可能不足以删除这些重复项。但是,通过将 DISTINCT 和 ORDER BY 组合在单个 SELECT 语句中,开发人员可以有效地消除重复项,同时保持所需的顺序。
要解决此问题,ORDER BY 子句必须包含 SELECT 子句中使用的列。使用 DISTINCT 时,它会根据指定的列对结果进行分组,从而有效地删除重复项。但是,如果 ORDER BY 子句引用了未包含在 DISTINCT 中的列,则排序会错误地将 SELECT 列中具有相同值的所有行分组,从而导致重复结果。
解决方案:
解决方法对于此问题,查询应使用聚合函数(例如 MAX())对所需列(本例中为 CreationDate)进行排序。此外,还添加了 GROUP BY 子句,以按 DISTINCT 列(类别)对结果进行分组。这种组合可确保删除重复项,同时保留结果的顺序。修改后的查询如下:
SELECT DISTINCT Category, MAX(CreationDate) FROM MonitoringJob GROUP BY Category ORDER BY MAX(CreationDate) DESC, Category
此修改后的查询将输出所需的结果,消除类别中的重复项,并按 CreationDate 降序排列它们,然后是类别。
以上是如何在 SQL 中组合 DISTINCT 和 ORDER BY 以获得唯一的有序结果?的详细内容。更多信息请关注PHP中文网其他相关文章!