如何将下面这个Oracle语句转化成MySQL后,实现相同的功能:

mysql 做这个不用太难,主要是获取集合的自主编号有点技巧。一般构建自主编号集合的方式。(SELECT @rank:=0) B 就是这个了!select @rank:=@rank+1 as Ident,A.* from (-- 主要是这个子查询输出所要的有限数据就可以了,索引从零开始 select * from test.t_a limit 0,5 )A ,(SELECT ...
如何将下面这个Oracle语句转化成MySQL后,实现相同的功能:
我都不想回复你,知道理由么?
你这oracle 都不对。
你排序后rownum就变化了,这个是在排序前构建,所以编号不是连续的。
如下检索:注意排序编号。
select rownum,month,sell from sale order by month;
ROWNUM MONTH SELL
--------- ------ ---------
1 200001 1000
2 200002 1100
3 200003 1200
4 200004 1300
5 200005 1400
6 200006 1500
7 200007 1600
11 200008 1000
8 200101 1100
9 200202 1200
10 200301 1300
真正的oracle分页是先构建子查询排序好输出,然后附加rownum。mysql 也一个原理。
mysql 做这个不用太难,主要是获取集合的自主编号有点技巧。一般构建自主编号集合的方式。
(SELECT @rank:=0) B 就是这个了!

select @rank:=@rank+1 as Ident,A.* from
(
-- 主要是这个子查询输出所要的有限数据就可以了,索引从零开始
select * from test.t_a limit 0,5
)
A ,(SELECT @rank:=0) B
---
我的表是t_a
结果是:
Ident id name
'1', '0', '1'
'2', '1', '2'
'3', '3', '4'
'4', '5', '6'
'5', '7', '8'
--
自动编号有了,你只要把你要获得的查询变成子查询即可。传入起始行和页面条目大小。
结果类似:
select @rank:=@rank+1 as Ident,A.* from
(
-- 主要是这个子查询输出所要的有限数据就可以了,索引从零开始,mysql 目前还不支持动态 limit解析,一般传入的都是静态变量值
SELECT num,userid,name from yxy ordey by num limit ?,?
)
A ,(SELECT @rank:=0) B

以上是页间编号,如果要全纪录自主编号,把 limit 放入外部查询即可。2011-08-13
mengvlog 阅读 8 次 更新于 2025-07-20 14:30:51 我来答关注问题0
  • anonymous oracle 中怎么把查询的结果 列转行 按天分组 下面是这个语句查询出来的。

    可以 select rq,count(case when age >= 0 and age

  •  百度网友0319a0e oracle 怎样将select 语句的查询结果作为另一个select 语句where 后面的查询条件

    1、首先我们先看一下我们的这个表信息。2、接着我们使用创建查询的方法,来测试sql。3、select的where的条件查询格式:select 【所选字段列表】 from 【数据表名】 where 条件表达式。4、上面那个是查询表中年龄大于10的数据。5、当然如果你有多个条件也可以写,多个条件表达式。要是用and进行连接。and...

  •  斗帝炎熏儿 ORACLE 我将数据文件删除,表空间删除不了,请问高手,如何将表空间用下面的语句删除,谢谢

    第一,你的胆子不小,直接删除了数据文件。你的数据库也比较争气,居然正常运行。不过现在的数据库千万不能停,一旦停了,那么基本上是起不来的,会报有数据文件找不到。你可以实验一下,先把数据文件offline,如果offline不行,那么就删除表空间但是不删除数据文件,也就是不加后面的including参数。然后...

  •  qiaochao911 oracle中的to_char() 在sqlserver2008中如何使用? 如下面的语句

    用Round() + Cast()就可以:Select b.unit_name ,a.amount1,a.amount2,a.amount3,a.amount ,cast(Round((a.Rate1 * 100),2) as varchar(13))+'%' Rate1,cast(Round((a.Rate2 * 100),2) as varchar(13))+'%' Rate2,cast(Round((a.Rate3 * 100),2) as varchar(13)),ca...

  •  mailking2001 oracle中analyze table xxx compute statistics;这个语句放在存储过程中报错啊,需要怎么设置啊?

    你把语句写成字符串后使用EXECUTE IMMEDIATE 来执行试试 例如,下面创建了一个T表 EXECUTE IMMEDIATE 'CREATE TABLE T (NAME VARCHAR2(20))'你上次说写了会报错,你能把你写的过程贴出来么!!

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部