【发布时间】:2012-08-07 14:53:47
【问题描述】:
我很难将我的 sybase 脚本转换为 Oracle 11g 脚本。我使用了翻译工具,但我对 Rowid 更加困惑。 有没有不使用rowid的更简单的方法,让刚学Oracle的我更容易消化?
这是我的 Sybase 脚本:
delete table_1
from table_1 a, table_2 b
where (select count(*) from table_2
where a.id = id
and a.seq = seq
and a.gcode = gcode
and a.gtype = gtype) = 0
and a.id = b.id
and a.seq = b.seq;
以下是 Oracle SQL 开发翻译工具的结果:
DELETE table_1
WHERE ROWID IN
( SELECT a.ROWID
FROM table_1 a,
table_2 b
WHERE ( SELECT COUNT(*)
FROM table_2
WHERE a.id = id
AND a.seq = seq
AND a.gcode = gcode
AND a.gtype = gtype ) = 0
AND a.id = b.id
AND a.seq = b.seq );
使用 ID 代替 RowId 是否安全?: table_1 和 table_2 中的 ID 指的是同一个 PK。 Table_1 和 table_2 互为镜像。
DELETE table_1
WHERE ID IN
( SELECT DISTINCT a.ID
FROM table_1 a,
table_2 b
WHERE ( SELECT COUNT(*)
FROM table_2
WHERE a.id = id
AND a.seq = seq
AND a.gcode = gcode
AND a.gtype = gtype ) = 0
AND a.id = b.id
AND a.seq = b.seq );
【问题讨论】:
标签: oracle11g