在mysql中并没有类似oracle中的rownum。可有的时候,我们需要获取对应的行数获取来进行相关排序、
实现方法
第一步:
SELECT @rownum:=0 from tableName t
rownum 其意思等同于声明一个变量名(所以可以任意修改),并赋初始值为0!
但是这样的运行结果都是等于0,所以必须用到自增才型
所以需要结合,故
第二步(自增)
select @rownum := @rownum+1 from (SELECT @rownum:=0 from tableName t) t
就可以实现oracle中的rownum
非常感谢 lwpan 的评论。他所说的问题的确存在。如果直接运行上面的SQL语句是会报
Space is not allowed after parameter prefix ':' 异常。
该异常是因为hibernate的jar在4.0以下版本bug导致,4.0以上是没问题的。可以参考
https://hibernate.atlassian.net/browse/HHH-2697
解决办法如下:
1.你所说的hibernate的bug的确存在,但是在4.0以下的版本,所以可以升级hibernate的jar !这点要说明下。其原理您也可以看看这篇文章
https://hibernate.atlassian.net/browse/HHH-2697
2.在网站上有多种解决办法,包括转义,函数,存储过程。其中转义是不可行,函数和存储过程是可以的.
3.以上2种办法虽然都可以解决,但都有很大弊端,第一种,一个项目一般不会因为你一个功能点而去升级一个jar,并且还要考虑到稳定 ,兼容等因素。
第二种,相对于来说好用点,但是,编写函数,存储过程的脚本有时候要给予数据库管理员,这个也麻烦点。
我想说的第三种办法是用hibernate的jdbc去查询,就可以实现!下面是个简单的样例
public List<Object[]> jdbcQuery(final String sql) { return (List<Object[]>) getHibernateTemplate().execute(new HibernateCallback() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { Connection con = session.connection(); PreparedStatement ps = con.prepareStatement(sql); ResultSet rs = ps.executeQuery(); String sort = null; String building_id = null; int rowNum = 0; List<Object[]> list = new ArrayList<Object[]>(); Object[] obj = null; while(rs.next()){ obj = new Object[1]; rowNum = rs.getInt("rownum"); obj[0] = rowNum ; list.add(obj); } rs.close(); ps.close(); session.flush(); session.close(); return list; } }); }
相关推荐
sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法
例如,MySQL支持的`LIMIT`在Oracle中需用`ROWNUM`或`FETCH FIRST`来实现分页;MySQL的`INFORMATION_SCHEMA`在Oracle中对应的是`DBA_`或`USER_`视图;此外,存储过程、触发器和函数的语法也有区别。 2. **数据类型...
总的来说,虽然 MySQL 没有内置的 `ROWNUM` 功能,但通过用户定义变量和子查询,我们可以实现与 Oracle 相似的逻辑。理解这些技巧对于那些习惯于 Oracle SQL 而又需要在 MySQL 中工作的开发者来说至关重要。希望这些...
在转换过程中,需要将Oracle的ROWNUM替换为MySQL的LIMIT子句。 3. **连接查询**:Oracle的JOIN语法允许在ON条件中使用子查询,而在MySQL中,子查询通常需要移到FROM或WHERE子句中。 4. **游标**:Oracle SQL支持...
本文将详细介绍 Oracle 中 ROWNUM 的使用方法,并与 SQL Server 中相应的功能进行对比分析。 #### Oracle ROWNUM 基础用法 1. **ROWNUM 的默认行为:** - 在 Oracle 中,ROWNUM 默认从 1 开始计数,对于每一行...
例如,MySQL中的LIMIT关键字用于分页,而Oracle使用ROWNUM;MySQL的JOIN语法相对简单,Oracle则有更灵活的连接方式。 3. 数据类型:MySQL和Oracle支持的数据类型有所不同,比如MySQL有ENUM和SET类型,Oracle有BFILE...
Mysql的`LIMIT`语句对应Oracle的`ROWNUM`或`FETCH FIRST`子句。"Convert Mysql to Oracle"会自动处理这些差异,将Mysql的数据结构和内容适配到Oracle的格式。 3. 数据加载:转换完成后,工具会将数据批量插入到...
比如,SQL Server中的`TOP`关键字用于限制返回的行数,而MySQL和Oracle则使用`LIMIT`(MySQL)或`ROWNUM`(Oracle)。 在文件名中提到的"oracle常用sql语句.txt"可能包含Oracle的一些常见操作,如`SELECT`用于查询...
本主题将深入探讨在MySQL和Oracle这两种流行的数据库管理系统中如何实现分页查询。 首先,我们来看MySQL中的分页查询。MySQL支持使用`LIMIT`和`OFFSET`关键字来实现分页。`LIMIT`用于指定每页显示的记录数,而`...
2. Limit:MySQL 中一般采用 `limit` 去实现分页功能,而 Oracle 中一般采用 `rownum` 去实现分页。 3. Date:两种数据库对日期的处理也不一样,MySQL 中更加灵活。 4. LEFT 函数:Oracle 中没有相同的函数,我们...
本文将深入探讨MySQL与Oracle两种常用的数据库管理系统中的分页技术。 首先,我们来看MySQL的分页技术。MySQL提供了`LIMIT`子句来实现分页查询。`LIMIT m, n`语句用于限制查询结果的数量,其中`m`是起始索引,`n`是...
- **Oracle**:利用`ROWNUM`实现分页。 **3. DATE类型处理** - **MySQL**:DATE类型的灵活性较高,支持更多的日期格式和操作。 - **Oracle**:相对较为固定,但提供了丰富的日期函数支持。 **4. LEFT函数** - ...
本文将深入探讨SQL Server、MySQL和Oracle这三种主流数据库系统中的分页查询实现方式。 首先,我们来看SQL Server。SQL Server提供了一种称为"TOP"的关键字来实现分页。例如,如果我们想获取第1页(假设每页有10条...
MySQL的分页查询使用`LIMIT`,而在Oracle中,需要利用`ROWNUM`。Oracle的分页SQL通常更为复杂,常见的做法是使用子查询或嵌套查询。例如: - **语句一**: ```sql SELECT id, field_name, ... FROM table_name ...
本文将基于提供的文件信息,深入探讨三种不同的分页查询方法及其在Oracle、SQL Server(这里用SQL代替)、MySQL中的实现方式,并对它们的性能进行对比分析。 #### 分页方案一:利用Not In和SELECT TOP分页 **基本...
而在 Oracle 中,由于没有直接的 `OFFSET`,通常需要通过 `ROWNUM` 列配合子查询来实现分页。两种常见的 Oracle 分页查询方式如下: - 语句一: ``` SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ...
例如,Oracle中用ROWNUM伪列进行分页,而在MySQL中则使用LIMIT和OFFSET。 最后,了解和实践这个过程可以帮助我们更好地理解和比较两种数据库系统的特性,从而在实际工作中更高效地处理跨平台的数据迁移和管理任务。...
在 MySQL 中,组函数可以随意使用,但在 Oracle 中,如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是 group by 子句中的列否则报错。 例如:select name,count(money) from user;这个放在 MySQL ...
本篇文章将探讨如何在Oracle数据库中实现类似MySQL的`LIMIT`分页功能,以及如何模拟SQL Server的分页方式,并介绍`INTERSECT`和`MINUS`这两个SQL运算符。 首先,`INTERSECT`运算符用于找出两个或多个查询结果中的...
Oracle 中可以通过调整 rownum 来控制记录数,查看执行次数、总执行时间、平均执行时间等信息。可以使用以下 SQL 语句来统计慢 SQL: ```sql SELECT * FROM ( SELECT sa.SQL_TEXT, sa.SQL_FULLTEXT, sa....