`
sungly
  • 浏览: 5855 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

解决“每个Y的最新X”SQL问题:

阅读更多
在实际的工作和学习中,“每个Y的最新X”是大家经常遇到的问题。请注意这不是“按Y分组求最新的X值”,而是要求最新X的那条记录或主键ID。下面我们用一条SQL语句来解决此问题。

生成实例表和数据:

--创建表
CREATE TABLE dbo.Tab
    (
    ID int NOT NULL IDENTITY (1, 1),
    Y varchar(20) NOT NULL,
    X datetime NOT NULL
    )
GO
--插入数据
INSERT INTO Tab(Y, X) values('BBB', '2007-10-23 11:11:11')
INSERT INTO Tab(Y, X) values('BBB', '2007-10-23 11:11:11')
INSERT INTO Tab(Y, X) values('BBB', '2007-10-23 10:10:10')
INSERT INTO Tab(Y, X) values('AAA', '2007-10-23 12:12:12')
INSERT INTO Tab(Y, X) values('AAA', '2007-10-23 10:10:10')
INSERT INTO Tab(Y, X) values('AAA', '2007-10-23 11:11:11')
GO

解决“每个Y的最新X”SQL问题:

--一条SQL语句实现
SELECT ID, Y, X
FROM Tab T
WHERE (NOT EXISTS
(SELECT 1
FROM Tab T2
WHERE (T2.Y = T.Y) AND (T2.X > T.X OR
T2.X = T.X AND T2.ID > T.ID)))
分享到:
评论
1 楼 ebeach 2009-12-14  
 -- 一句SQL
  SELECT t.col1, max(t.col2) 
    FROM Tab t
GROUP BY t.col1

相关推荐

    一条语句简单解决“每个Y的最新X”的经典sql语句

    要解决"每个Y的最新X"的问题,我们可以利用SQL的聚合函数和排序功能。一种常见的方法是使用`ROW_NUMBER()`窗口函数。这个函数可以在每个分组内为每行分配一个唯一的行号,基于特定的排序条件。在这个场景下,我们...

    SQL查询语句实用大全(适合SQL的初学者以及经常写SQL的人)

    SELECT x.userName, x.userSexCard, y.id, y.userSex FROM [tstudentinfo] x JOIN [tusersex] y ON x.userSexCard = y.id; ``` - **内连接**:只返回两个表中有匹配的行。 ```sql SELECT x.userName, y.id, y....

    常用sql语句技巧大全

    在多个记录中找出每个组中的最新记录。这种需求常见于统计或报表系统中。 **SQL语法:** ```sql SELECT a.title, a.username, b.add_date FROM table_a, ( SELECT MAX(add_date) add_date FROM table_b WHERE ...

    sql精妙用法,希望能对大家有所帮助

    这个查询将按照用户、电话、固定费用、年份以及每个月的费用进行统计。 以上就是SQL的一些巧妙用法,它们展示了SQL在数据处理上的灵活性和强大功能。熟练掌握这些技巧,可以极大地提升SQL查询的效率和实用性。

    SQLite 函数大全

    SQLite 函数大全提供了多种函数来实现不同的操作,以下是对每个函数的详细说明: 1. abs(X) 函数:返回参数 X 的绝对值。 2. coalesce(X,Y,…) 函数:返回第一个非空参数的副本。若所有的参数均为 NULL,返回 NULL...

    SQL函数大总结(高清pdf)

    底数 x 和指数 y 不必是正整数,但若 x 为负数,则 y 必须为整数。 - **示例**:`SELECT POWER(2, 3);` 返回 8。 ##### **1.15 四舍五入函数:ROUND(x[, y])** - **定义**:ROUND(x[, y]) 函数返回 x 四舍五入到...

    SQL server 2005 资料

    - 2NF(第二范式):首先必须满足1NF,然后要求关系中的每个非主属性完全依赖于整个主键,而不是主键的一部分。这样可以避免部分函数依赖带来的问题,如更新异常和插入异常。 在设计数据库时,应尽可能使关系达到更...

    SQL语言中差运算与除运算实现的几种方法.pdf

    SQL(Structured Query Language)语言是用于存取和操作关系数据库的标准计算机语言,而关系代数是关系数据库理论的...在实际应用中,合理运用这些SQL操作可以帮助提高数据库的运行效率,并且能够高效地解决实际问题。

    易语言常用SQL语句

    ### 易语言中的SQL语句应用详解...此SQL语句用于从`phone_fee`表中统计各个单位去年每个月的电话费用。通过使用`DECODE`函数和`SUM`函数,可以分别计算出每个月的总费用,并按用户、电话号码、标准费用及年份进行分组。

    sql关键字字典大全

    综上所述,SQL关键字涵盖了从数据定义、数据操纵到数据控制的各个方面,每个关键字都有其独特的功能和应用场景。掌握这些关键字的含义和用法对于编写高效、正确的SQL语句至关重要。此外,虽然不同数据库管理系统...

    比较精典的SQL语句大全

    下面将详细解释每个知识点。 ### 数据操作 1. **SELECT**:用于从数据库表中检索数据行和列。 - 示例:`SELECT * FROM table_name WHERE column_name OPERATOR value;` - 其中 `OPERATOR` 可以是 `=`, `, `>`, `...

    db期中考卷sql讲解1

    在这个查询中,我们先按雇员编号分组,然后计算每个雇员的不同部门编号数量,只有当这个数量大于等于2时,才选取该雇员。 以上就是对题目中SQL查询的详细解答,涵盖了SQL语句的编写、关系代数的理解以及如何处理多...

    SqlServer 第三范式

    函数依赖是关系数据库设计的核心概念之一,函数依赖是指在关系模式 R(U) 中,X,Y 是 U 的子集,r 是 R 的任一具体关系,如果对 r 的任意两个元组 t1,t2,由 t1[X]=t2[X] 导致 t1[Y]=t2[Y],则称 X 函数决定 Y,或 Y...

    精妙SQL语句.txt

    通过子查询结合`MAX()`函数,可以找到每个标题下的最新记录日期。例如: ```sql SELECT a.title, a.username, b.adddate FROM tablea, (SELECT MAX(adddate) AS adddate FROM table WHERE table.title = a.title) b;...

    SQL 机试题

    - **分组与聚合**:使用`GROUP BY`子句对课程进行分组,并使用`COUNT(*)`统计每个课程的选课人数。 - **多表查询**:涉及到了`课程`表和`选课`表。 ##### 题目4:查询两个特定学生选修的相同课程 ```sql SELECT x....

    SQL Server死锁总结

    - 可以为每个会话设置死锁优先级,优先级高的会话在发生死锁时更有可能成为幸存者。 2. **重试失败的事务** - 当事务被选为受害方并回滚后,可以根据实际情况决定是否需要重试事务。 3. **使用自定义错误处理**...

    经典sql练习题,用于平常联系及考试

    **解析**: 通过`GROUP BY`对每个学生(`Sno`)进行分组,`HAVING`子句用来过滤出最低分大于70且最高分小于90的学生。 #### 14. 查询所有学生的Sname、Cno和Degree列。 ```sql SELECT Student.Sname, Score.Cno, ...

    精妙SQL语句精妙SQL语句精妙SQL语句

    通过子查询计算每个`title`下的最大`add_date`值,并与主表中的`title`进行关联,从而返回每组记录中的最新一条。 ### 4. 左外连接查询 **SQL**: `SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUTER JOIN b ...

Global site tag (gtag.js) - Google Analytics