子查询中的DB2 ROWID错误

时间:2014-08-19 21:08:29

标签: sql db2

运行以下查询时:

SELECT T.ROWID FROM TABLE1 T WHERE NOT EXISTS (SELECT T.ROWID FROM TABLE2 T2 WHERE T2.C21= T.C11) AND EXISTS
(SELECT 1 FROM TABLE3 F WHERE T.C11 = F.C31)

导致错误

SQL0206N  "ROWID" is not valid in the context where it is used.
SQLSTATE=42703

,而

SELECT T.ROWID FROM TABLE1 T WHERE NOT EXISTS (SELECT 1 FROM TABLE2 T2 WHERE T2.C21= T.C11) AND EXISTS
(SELECT 1 FROM TABLE3 F WHERE T.C11 = F.C31)

工作正常。是什么原因以及应该采取什么补救措施?

修改 我需要唯一地标识表中的一行。该表没有任何关键字段,我不允许编辑表数据。因此我使用了ROWID。 关于可以通过连接完成的注释,我可能需要将ROWID与其他条件一起使用,如下面的查询:

 SELECT T.ROWID FROM TABLE1 T WHERE NOT EXISTS (SELECT 1 FROM TABLE2 T2 WHERE T2.ROWID= T.ROWID) AND EXISTS
    (SELECT 1 FROM TABLE3 F WHERE T.C11 = F.C31).

即使在这种情况下,我也无法使用ROWID进行比较。我是对的吗?

0 个答案:

没有答案