具有复合键的SQL where子句

具有复合键的SQL where子句,sql,oracle,foreign-keys,where,composite-key,Sql,Oracle,Foreign Keys,Where,Composite Key,我正在编写自定义Oracle查询来删除子表中的数据,以避免将外键约束作为清理测试数据实用程序的一部分 假设我有两个表-表1(PK-(id1,id2))和表2(FK-(id3,id4)),其中id1,id2,id3,id4都是类型号。表2对表1的主键具有复合外键约束。以下是我现在所做的(仅选择now,稍后将更改为delete): 但是,执行此命令会给我ORA-00904新的\u搜索:无效的\u标识符。因此,我的问题是: (1) 我做错了什么?和 (2) 有没有更好的办法 谢谢。1)您不能在wher

我正在编写自定义Oracle查询来删除子表中的数据,以避免将外键约束作为清理测试数据实用程序的一部分

假设我有两个表-表1(PK-(id1,id2))和表2(FK-(id3,id4)),其中id1,id2,id3,id4都是类型号。表2对表1的主键具有复合外键约束。以下是我现在所做的(仅选择now,稍后将更改为delete):

但是,执行此命令会给我ORA-00904新的\u搜索:无效的\u标识符。因此,我的问题是:

(1) 我做错了什么?和 (2) 有没有更好的办法

谢谢。

1)您不能在where子句中使用列别名
2) 试试这个:

select t2.id3, t2.id4 
from Table2 t2 
where (t2.id3, t2.id4) in 
  (select t1.id1, t1.id2 
   from Table1 t1 
   where t1.someColumn=someValue
  );

谢谢我想得太多了。
select t2.id3, t2.id4 
from Table2 t2 
where (t2.id3, t2.id4) in 
  (select t1.id1, t1.id2 
   from Table1 t1 
   where t1.someColumn=someValue
  );