如何将前序查询结果作为WHERE子句条件用于Oracle后续查询?
直接引用子查询结果筛选数据的Oracle实现
当然可以直接引用前序查询的结果,无需手动输入ID,以下是两种常用实现方式:
方法一:IN子句嵌套子查询
这是最直观的写法,将筛选BATCH_ID的查询作为子查询嵌入IN条件中:
SELECT RECIPE_ID FROM LG_EBR_ACTION_LIST WHERE BATCH_ID IN ( SELECT BATCH_ID FROM PM_BATCH_ST WHERE COLUMN_DATA1 IS NULL )
数据库会优先执行括号内的子查询,得到所有COLUMN_DATA1为空的BATCH_ID列表,再用该列表匹配LG_EBR_ACTION_LIST表的记录,返回对应的RECIPE_ID。
方法二:JOIN关联查询
若数据量较大,关联查询的性能表现可能更优,需添加DISTINCT避免重复结果:
SELECT DISTINCT la.RECIPE_ID FROM LG_EBR_ACTION_LIST la JOIN PM_BATCH_ST pb ON la.BATCH_ID = pb.BATCH_ID WHERE pb.COLUMN_DATA1 IS NULL
两种写法均无需手动维护ID列表,会自动同步子查询的结果。
内容的提问来源于stack exchange,提问作者user22060295
相关产品推荐
相关产品推荐

