`

mysql伪列

    博客分类:
  • sql
 
阅读更多
-- 工作中遇到分组中取最大值的问题
-- 使用MYSQL,有些情况下,MYSQL需要先降序排序后分组,才能取到分组前中的给定值,
-- 之前的思路也一直是先子排序,后分组,想到排序可能影响查询性能,查阅资料,
-- 发现MYSQL伪列(id)的一个很有用的用途,就是可以在子查询中做为主查询的"标记"

-- id 为t_product_detail主键且自增
SELECT l.* FROM t_product_detail l, (SELECT MAX(t.id) FROM t_product_detail t GROUP BY t.productId) AS o WHERE l.id = o.id;

-- 修改前的sql为
SELECT l.* FROM t_product_detail l, (SELECT o.id FROM (SELECT t.id, t.productId FROM t_product_detail t ORDER BY t.id DESC) AS o GROUP BY o.productId) AS i WHERE l.id = i.id;

-- 在t_product_detail中有同productId的情况,使用version区分最新版本
-- 实际项目中不允许使用'*',需要使用具体字段代替, 这里使用'*'仅表示省略

分享到:
评论

相关推荐

    Mysql 集合运算,伪列,开窗函数及示例代码

    MySql只支持Union(并集)集合运算;但是对于交集Intersect、差集Except,就没有实现了。一般的解决方案用in和not in来解决,小量数据还可以,但数据...伪列:实现类似Oracle,MySqlServer的Over() partition by 开窗函数

    详细讲解MySQL大数据量分页SQL语句优化

    分页程序原理很简单,这里就不多说了,本篇文章主要说的是在数据表记录量比较大的情况下,如何将分页SQL做到更优化,让MySQL执行的更快的方法。

    mysql5.5.6.rar

    MySQL 5.5系列是MySQL发展的一个重要里程碑,引入了许多新特性,例如InnoDB存储引擎的改进,支持更大的表和更多的列,以及对ACID(原子性、一致性、隔离性、持久性)事务的增强。 在描述中提到的"winpty mysql -u...

    Mysql的卸载 Mysql完全卸载 强力卸载mysql

    它会列出所有与MySQL相关的软件包。 #### 步骤2:卸载MySQL组件 接着,使用`yum remove`命令逐一卸载这些组件,例如: - `yum remove mysql-community-common-版本号` - `yum remove mysql-community-client-版本号...

    深入浅出Mysql优化性能提升.txt

    14-伪哈希函数降低索引长度.wmv 15-大数据量分页优化.wmv 16-索引与排序.wmv 17-冗余索引与重复索引.wmv 18-索引碎片修复.wmv 19-Explain分析SQL效果.wmv 20-In型子查询陷阱.wmv 21-Exists一定比子查询慢吗.wmv 22-...

    oracle scott 转成mysql 的表学习应用

    例如,Oracle中用ROWNUM伪列进行分页,而在MySQL中则使用LIMIT和OFFSET。 最后,了解和实践这个过程可以帮助我们更好地理解和比较两种数据库系统的特性,从而在实际工作中更高效地处理跨平台的数据迁移和管理任务。...

    mySql与oracle分页技术

    Oracle没有直接提供类似`LIMIT`的语法,但它可以通过`ROWNUM`伪列或者结合`FETCH NEXT`和`OFFSET`子句来实现分页。`ROWNUM`是在查询过程中为每行分配的唯一整数,我们可以利用它来筛选出特定范围的行。例如,获取前...

    两个版本Mysql和Oracle的分页标签

    这里的`ROWNUM`伪列会在查询执行时为每一行生成一个唯一的数字,然后在外层查询中根据这个数字进行筛选。与MySQL不同,Oracle的`ROWNUM`是基于1的。 在IDEA这样的集成开发环境中,可以创建分页标签来封装这些SQL...

    MySQLDBA运维笔记.pdf

    mysql 总结........................................................................................................................................6 1.1 数据库的种类.......................................

    sqlserver,mysql,oracle三种数据库的分页查询

    Oracle使用的是`ROWNUM`伪列,但是它不能直接与`ORDER BY`一起使用,所以我们需要结合子查询。获取第一页的方式如下: ```sql SELECT * FROM ( SELECT t.*, ROWNUM AS rn FROM TableName t ORDER BY SomeColumn ...

    oracle、mysql数据库分页

    在Oracle数据库中,实现分页查询可以通过多种方法,其中一种常见的方法是使用`ROWNUM`伪列来实现。 **基本原理:** - `ROWNUM`用于标识查询结果集中的行编号。 - `ROWNUM`在查询时自动递增,初始值为1。 **具体...

    Oracle.VS.Mysql

    为了获取特定数量的记录,**Oracle**使用`rownum`伪列结合`where`子句,而**MySQL**使用`limit`关键字。对于特定范围的记录筛选,Oracle的语法较为复杂,需嵌套查询,而MySQL的`limit`关键字可以轻松实现这一功能。 ...

    MySQL实现类似Oracle序列的方案

    MySQL实现类似Oracle的序列...Oracle序列的使用,无非是使用.nextval和.currval伪列,基本想法是: 1、MySQL中新建表,用于存储序列名称和值; 2、创建函数,用于获取序列表中的值; 具体如下: 表结构为:  drop tabl

    面向海量天文数据的分布式MySQL锥形检索研究.pdf

    本文主要介绍了一种针对海量天文数据的分布式MySQL锥形检索的研究方法,使用数据库中间件技术,通过分库分表的方式将数据存储到分布式数据库集群中,并通过动态索引工具建立伪球面索引,以此来满足锥形检索的需求。...

    mysql开发规范文档

    - 优先考虑前缀索引,必要时添加伪列创建索引。 - 表必须有主键,且不使用更新频繁的列,避免性能下降。 - 避免使用字符串列作为主键,不使用UUID、MD5或HASH。 - 默认使用非空唯一键,推荐自增主键。 - 重要的...

    oracle mysql分页源码

    1. ROWNUM关键字:Oracle 中最基础的分页方式是通过ROWNUM伪列,它会为查询结果集中的每一行分配一个唯一的数字。例如,要获取第10到20条记录,可以使用如下SQL语句: ```sql SELECT * FROM ( SELECT a.*, ROWNUM ...

    mysql,sqlserver,oracle取前10条数据.docx

    这种方法可以取出 table1 中的前 10 条数据,但是需要注意的是,rownum 伪列只能用于取出指定的行数,而不能用于排序。 在实际项目中,我们可能需要取出指定的行数,并且按照某个字段进行排序。在这种情况下,我们...

    MySQL和Oracle的区别以及各自的特点

    相同点: 1.都是关系型数据库管理系统 2.都是目前很流行的数据库 不同点: 1.MySQL是轻量型数据库,并且免费,没有服务恢复数据。...MySQL用limit开始位置, 记录个数就可以实现分页,而Oracle则是需要用到伪列ROWNUM

    mysql、sqlserver、oracle分页,java分页统一接口实现

    Oracle 分页使用 rownum 伪列来实现,rownum 伪列可以指定数据的行号。例如,以下语句将从 mytable 表中获取从第 10 行到第 20 行的数据: ```sql select * from ( select mytable.*, rownum num from ( select *...

Global site tag (gtag.js) - Google Analytics