最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle迁移至MySQL部分语句的转换

来源:懂视网 责编:小采 时间:2020-11-09 10:28:36
文档

Oracle迁移至MySQL部分语句的转换

Oracle迁移至MySQL部分语句的转换:前几天把系统从oracle往mysql上迁移,很多的语句是比较简单的,就是一些函数的修改如to-date等 Oracle 迁移至MySQL部分语句的转换 [日期:2014-02-27] 来源:Linux社区 作者:jimmy609 [字体:] 前几天把系统从Oracle往mysql上迁移,很多
推荐度:
导读Oracle迁移至MySQL部分语句的转换:前几天把系统从oracle往mysql上迁移,很多的语句是比较简单的,就是一些函数的修改如to-date等 Oracle 迁移至MySQL部分语句的转换 [日期:2014-02-27] 来源:Linux社区 作者:jimmy609 [字体:] 前几天把系统从Oracle往mysql上迁移,很多

前几天把系统从oracle往mysql上迁移,很多的语句是比较简单的,就是一些函数的修改如to-date等

Oracle 迁移至MySQL部分语句的转换

[日期:2014-02-27] 来源:Linux社区 作者:jimmy609 [字体:]

前几天把系统从Oracle往mysql上迁移,很多的语句是比较简单的,就是一些函数的修改如to-date等

但是也有几个比较棘手的,这里记录下

第一、row_number() over(partition by

首先要了解下oracle中这个函数的用法,看个例子

select t.*,row_number() over(partition by t.owner order by y.createDate desc) rn from test t

这个语句的意思就是,把test这个表的数据按照owner 分组并且给每个分组的里面的数据加上一个序列号,数据格式如下

id name owner createDate rn

1 aa 001 1

2 bb 001 2

3 cc 001 3

4 dd 002 1

5 ee 002 2

6 ff 003 1

数据搞得不太正规,但是应该能够看懂它的意思吧,

但是在mysql中是没有这个函数的于是乎,找啊找,,总算找了个解决方法,如下

SELECT
heyf_tmp.*,
IF(@pdept=heyf_tmp.owner ,@rn:=@rn+1,@rn:=1) AS rn,
@pdept:=heyf_tmp.owner
FROM
(
SELECT
yv.*
FROM
test yv
ORDER BY
yv.owner ,
yv.createDate DESC
)
heyf_tmp ,
(
SELECT
@rn :=0 ,
@pdept := NULL ,
@rn:=0
)
aa


具体是什么意思,不是很清楚,不过先解决问题再说

第二、oracle树形查询

oracle树形查询现成的方法

select distinct t.id as id, t.name

from test t
start with id=‘’
connect by prior id = parentid

但是mysql中是没有这个方法的,于是只能自己定义函数或者过程,我这里用的是过程

如下

CREATE PROCEDURE Pro_GetTreeList`(in pid varchar(36))
begin
declare lev int;
set lev=1;
drop table if exists tmp1;
CREATE TABLE tmp1(id VARCHAR(40),name varchar(50),parentid varchar(40) ,levv INT);
INSERT tmp1 SELECT id,name,parent_id,1 FROM `test` WHERE parent_id=pid;
while row_count()>0
do set lev=lev+1;
INSERT tmp1 SELECT t.id,t.name,t.parent_id,lev from testt join tmp1 a on t.parent_id=a.id AND levv=lev-1;--查出子节点
end while ;
INSERT tmp1 SELECT id,name,parent_id,0 FROM test WHERE id=pid; --查出当前节点
end


这个存储过程应该都能看懂吧,就不做多解释了

linux

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

Oracle迁移至MySQL部分语句的转换

Oracle迁移至MySQL部分语句的转换:前几天把系统从oracle往mysql上迁移,很多的语句是比较简单的,就是一些函数的修改如to-date等 Oracle 迁移至MySQL部分语句的转换 [日期:2014-02-27] 来源:Linux社区 作者:jimmy609 [字体:] 前几天把系统从Oracle往mysql上迁移,很多
推荐度:
标签: 转换 迁移 迁到
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top