使用 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;
在此查询中:
以上是如何在单个 SQL SELECT 语句中同时使用 DISTINCT 和 ORDER BY?的详细内容。更多信息请关注PHP中文网其他相关文章!