求不重复的字段并返回最新日期的SQL方法

简介: 有下面的一段原数据: KS_Date    KS_MetalName KS_TopLimit KS_BottomLimit KS_Average KS_Change 2011-12-14 00:00:00.

有下面的一段原数据:

KS_Date    KS_MetalName KS_TopLimit KS_BottomLimit KS_Average KS_Change
2011-12-14 00:00:00.000 a 100 10 55 54
2011-12-14 00:00:00.000 b 1 1 2 2
2011-12-14 00:00:00.000 c 1 1 10 1
2011-12-14 00:00:00.000 d 1 1 1 1
2011-12-14 00:00:00.000 e 1 1 1 1
2011-12-14 00:00:00.000 f 1 1 1 1
2011-12-14 00:00:00.000 g 1 1 1 1
2011-12-15 00:00:00.000 a 10 10 10 -45
2011-12-16 00:00:00.000 b 2 10 6 4
2011-12-16 00:00:00.000 c 2653 2001 2327 2317
2011-12-16 00:00:00.000 d 300 10 155 154
2011-12-16 00:00:00.000 e 200 100 150 149
2011-12-16 00:00:00.000 f 500 300 400 399
2011-12-16 00:00:00.000 g 5000 200 2600 2599
2011-12-23 00:00:00.000 a 20 10 15 5
2011-12-24 a 22 3 3 3
           
NULL NULL NULL NULL NULL NULL

1、求最新的日期并且KS_MetalName不重复

SELECT     MAX(KS_Date) AS 最新日期, KS_MetalName
FROM KS_U_SpotPrice
GROUP BY KS_MetalName

缺陷是无法返回多行记录,只能返回最多现行:KS_Date和KS_MetalName不能满足我们的要求

2、现在变通方法如下:

SELECT     KS_Date, KS_MetalName, KS_TopLimit, KS_BottomLimit, KS_Average, KS_Change
FROM KS_U_SpotPrice
WHERE (KS_Date IN
(SELECT MAX(KS_Date) AS AS最新日期
FROM KS_U_SpotPrice AS TempTable
GROUP BY KS_MetalName))
ORDER BY KS_MetalName

突然间发现上面这种方法也不能满足要求 ,但是下面的方法保证没有问题:

SELECT     ID, KS_Date, KS_MetalName, KS_TopLimit, KS_BottomLimit, did, username, userleavel
FROM test AS a
WHERE (KS_Date IN
(SELECT MAX(KS_Date) AS Expr1
FROM test AS b
WHERE (a.KS_MetalName = KS_MetalName)))
ORDER BY KS_MetalName


3、如果要是求今天最新的日期的返回值方法如下:

select KS_Date,KS_MetalName,KS_TopLimit,KS_BottomLimit,KS_Average,KS_Change
from KS_U_SpotPrice
where (DATEDIFF("d",KS_Date,GETDATE())=0)
order by KS_MetalName ASC



学习交流群:364976091
相关文章
|
8月前
|
SQL 索引
【YashanDB知识库】字段加上索引后,SQL查询不到结果
【YashanDB知识库】字段加上索引后,SQL查询不到结果
|
6月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
506 18
|
6月前
|
SQL Java 数据库连接
Java中实现SQL分页的方法
无论何种情况,选择适合自己的,理解了背后的工作原理,并能根据实际需求灵活变通的方式才是最重要的。
189 9
|
7月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
264 12
|
7月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
8月前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
211 16
|
12月前
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
482 71
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
607 4
|
SQL BI 数据库
SQL操作的一些基本方法
【10月更文挑战第27天】SQL操作的一些基本方法
181 3
|
SQL 监控 固态存储
SQL优化有哪些方法?
【10月更文挑战第27天】SQL优化有哪些方法?
418 3