MySQL中模拟oracle中的rownum列

mysql> select @rn := @rn + 1 as rownum, emp_no, dept_no, from_date, to_date
    ->   from dept_emp, (select @rn := 0) a limit 20;
+--------+--------+---------+------------+------------+
| rownum | emp_no | dept_no | from_date  | to_date    |
+--------+--------+---------+------------+------------+
|      1 |  10001 | d005    | 1986-06-26 | 9999-01-01 |
|      2 |  10002 | d007    | 1996-08-03 | 9999-01-01 |
|      3 |  10003 | d004    | 1995-12-03 | 9999-01-01 |
|      4 |  10004 | d004    | 1986-12-01 | 9999-01-01 |
|      5 |  10005 | d003    | 1989-09-12 | 9999-01-01 |
|      6 |  10006 | d005    | 1990-08-05 | 9999-01-01 |
|      7 |  10007 | d008    | 1989-02-10 | 9999-01-01 |
|      8 |  10008 | d005    | 1998-03-11 | 2000-07-31 |
|      9 |  10009 | d006    | 1985-02-18 | 9999-01-01 |
|     10 |  10010 | d004    | 1996-11-24 | 2000-06-26 |
|     11 |  10010 | d006    | 2000-06-26 | 9999-01-01 |
|     12 |  10011 | d009    | 1990-01-22 | 1996-11-09 |
|     13 |  10012 | d005    | 1992-12-18 | 9999-01-01 |
|     14 |  10013 | d003    | 1985-10-20 | 9999-01-01 |
|     15 |  10014 | d005    | 1993-12-29 | 9999-01-01 |
|     16 |  10015 | d008    | 1992-09-19 | 1993-08-22 |
|     17 |  10016 | d007    | 1998-02-11 | 9999-01-01 |
|     18 |  10017 | d001    | 1993-08-03 | 9999-01-01 |
|     19 |  10018 | d004    | 1992-07-29 | 9999-01-01 |
|     20 |  10018 | d005    | 1987-04-03 | 1992-07-29 |
+--------+--------+---------+------------+------------+
20 rows in set (0.00 sec)

mysql>

  

时间: 2024-11-04 14:54:55

MySQL中模拟oracle中的rownum列的相关文章

如何在postgresql中模拟oracle的dual表,来测试数据库最基本的连接功能?

还好,网上弄到的,,没有dual的数据库,可以试图用select函数不带from数据表的方式来实现返回值. 一段测试代码: try: conn = psycopg2.connect(database=db.service_name, user=db.username, password=password, host=db.ip, port=db.port) cursor = conn.cursor() except Exception, e: context_dict = {'msg': e,

在JSP中获取oracle中的时间戳类型的字段并显示

在oracle中有一种特殊的时间显示类型——Timestamp时间戳 通常我们将当前时间转化为时间戳的语法如下: select cast (sysdate as timestamp ) from dual 在一个JSP页面中,需要获取一个时间戳字段,以显示在页面上 首先,是对JDBC的操作 sql语句用: select * from testlibrary 假设testlibrary中的modifydate字段的类型为TIMESTAMP(6) Testlibrary tlb= new Testl

判断一个数据是否存在于一个表中,Oracle中写自定义函数

create or replace function isExist(data in DataTypes) --DataTypes 为表中该数据的类型return Numberisv_flag number(2);v_data [DataTypes]; --表中数据的类型beginselect data into v_data from table_name where ....;if v_data not null then v_falg := 1;else v_flag :=0;end if

Oracle中HINT的30个用法

在SQL语句优化过程中,经常会用到hint, 以下是在SQL优化过程中常见Oracle中"HINT"的30个用法 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化. 例如: SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO='SCOTT'; 2. /*+FIRST_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消

对oracle中date/timestamp的操作

设置oracle中date的会话格式为 'yyyy-mm-dd hh24:mi:ss' alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 设置oracle中timestamp的会话格式为 ‘yyyy-mm-dd hh24.mi.ss.ff’ alter session set nls_timestamp_format='yyyy-mm-dd hh24.mi.ss.ff'; c#中向oracle中插入date 可以直接操作日期数据

【SQL Server数据迁移】64位的机器:SQL Server中查询ORACLE的数据

从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 .64位的机器和软件,需要用不同的驱动程序来实现. 在64位的机器上,通过访问接口:OracleProvide for OLE DB,来实现. 1.机器环境和软件环境 操作系统是:windows 7旗舰版 64位,SQL Server 20008R2  64  位,Oracle 11g 11.2.0.1.0   64 位. 2.ORACLE环境的设置 连接orac

mysql 用 @rownum := @rownum+1 实现 "oracle中的rownum = xxx或者rownum <= xxx" 功能

我们先看看MySQL官网文档是怎么描述这个问题的:如下图所示. 由上面可知:MySQL不允许SQL语句的嵌套语句内的when rownum=1等类似的分页查询,需要用到临时变量来实现改造该功能 举个例子: Oracle中的SQL写法如下: select * from oms_sub_tempdata where rownum <= 10 order by dataid asc MySQL改造之后的写法如下: select a.* from (select b.*,@rownum := @rown

《转》ORACLE中的rownum(实现真分页的方法)

1 引言 Oracle中的rownum一般是在实现分页查询时用到,虽然在我做的项目中只实现了分页显示而没有实现真正的分页,但是出于学习的目的研究了一下oracle的rownum.在使用查询语句时,我们经常要求返回表中的前n条记录或者是中间的几条记录,比如在一个大表(假设有10W条数据)要求查询从第1000到1005条的记录.面对这种查询,我们怎么办呢?mysql和oracle都有自己的解决办法. 2 MySql中的实现 在mysql中,我们可以使用limit语句来实现: 1)查询从第1000到1

转:Oracle中的rownum不能使用大于&gt;的问题

一.对rownum的说明 关于Oracle 的 rownum 问题,很多资料都说不支持SQL语句中的“>.>=.=.between...and”运算符,只能用如下运算符号“<.<=.!=”, 并非说用“>.>=.=.between..and”时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来. 其实,只要理解好了这个 rownum 伪列的意义就不应该感到惊奇. rowid 与 rownum 虽都被称为伪列,但它们的存在方式是不一样的: r