Sql 子查询中的DB2 ROWID错误

Sql 子查询中的DB2 ROWID错误,sql,db2,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) SELECT T.ROWID FROM TABLE1 T WHERE NOT EXISTS (SELECT 1 FROM TABLE2 T2 WHERE T2.ROWID

运行以下查询时:

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)
 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).
导致错误

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

很好。原因是什么?补救措施应该是什么

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

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)
 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进行比较。我说得对吗?

是否从表2中选择了T.ROWID,其中T2.C21=T.C11执行?首先,两者应该是相同的。而且,您可能是指子查询中的t2.ROWID。@安德鲁:不,不是。但是只使用EXISTS子句是有效的。不,它不起作用-这可能是因为t别名没有在子查询中定义,只有T2…请阅读关于ROWID的文档。然后停止使用它。