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

新手上路,请多包涵

执行以下语句后:

 SELECT  Category  FROM MonitoringJob ORDER BY CreationDate DESC

我从数据库中获取以下值:

 test3
test3
bildung
test4
test3
test2
test1

但我希望删除重复项,如下所示:

 bildung
test4
test3
test2
test1

我尝试使用 DISTINCT,但它不适用于 ORDER BY 在一个语句中。请帮忙。

重要的:

  1. 我试过了:
    SELECT DISTINCT Category FROM MonitoringJob ORDER BY CreationDate DESC

它不起作用。

  1. 按 CreationDate 排序非常重要。

原文由 r.r 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 924
2 个回答

问题是 --- 中使用的列未在 DISTINCT ORDER BY 中指定。为此,您需要使用 聚合函数 进行排序,并使用 GROUP BY 使 DISTINCT 工作。

尝试这样的事情:

 SELECT DISTINCT Category, MAX(CreationDate)
FROM MonitoringJob
GROUP BY Category
ORDER BY MAX(CreationDate) DESC, Category

原文由 Prutswonder 发布,翻译遵循 CC BY-SA 3.0 许可协议

我们可以通过选择子查询来做到这一点

这是查询:

 SELECT * FROM (
    SELECT DISTINCT Category FROM MonitoringJob
) AS Tbl
ORDER BY Tbl.CreationDate DESC

原文由 Jitendra Suthar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进