【问题标题】:SQL Query SELECT DISTINCT WHERE BYSQL 查询 SELECT DISTINCT WHERE BY
【发布时间】:2017-07-20 20:29:27
【问题描述】:

我有一个包含名称“名称”、“产品”、“值”、“更新日期”列的表格。我想要一个 SQL 语句来选择列“名称”、“产品”、“值”的唯一值,但这样做的方式是按最近到最近的“更新日期”对它们进行排序。

如果我返回这样一个 SQL 选择语句的输出,我可以很容易地获得最近更新的三个名称或三个产品、三个值。有没有我可以使用的 SQL 语句?

我正在考虑为每个列使用单独的 SQL 语句:“名称”、“产品”、“值”。并在某处有一个 ORDER BY 语句。有什么想法吗?

【问题讨论】:

  • edit 您的问题并添加一些示例数据和基于该数据的预期输出。 Formatted textno screen shots。不要在 cmets 中发布代码或附加信息
  • 您使用的是哪个DBMS?后格雷斯?甲骨文? DB2?火鸟?

标签: sql select sql-order-by


【解决方案1】:

你需要切换到一个聚合来获取排序的最大日期:

select Name, Product, Value
from tab
group by Name, Product, Value
order by MAX(UpdateDate) desc

【讨论】:

  • 谢谢!!澄清一下,此查询将获取由具有最大 UpdateDate 的列 Name、Product、Value 组成的唯一条目。如果我希望唯一条目不包含三列,名称、产品、值,而是单独的名称或单独的产品或单独的值,我需要执行单独的语句对吗?如:按MAX(UpdateDate) desc从标签组中选择名称,按MAX(UpdateDate) desc从标签组中选择产品,...等
  • @Diana:是的,它返回唯一的Name, Product, Value 组合 并按最新的UpdateDate 排序。如果你想为每一列添加三个 Select plus UNION ALL
猜你喜欢
  • 1970-01-01
  • 2011-01-29
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 2023-03-10
  • 2015-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多