我很难将sybase脚本转换为Oracle 11g脚本。我使用了翻译工具,但我对Rowid更加混淆。 有没有更简单的方法做到这一点,而不使用rowid,因此对于我来说,只要学习Oracle就能更容易消化?加入Oracle 11g中的删除
这里是我的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);