Sql 如何避免仅在一个条件下调用两次select查询以获得差异
下面提到的查询外部查询和内部查询类似,除了一个子句T2.COL2=临时/永久。为适应此子句,select执行两次,导致性能下降。我们可以合并内部查询和外部查询,避免使用exists,也避免调用select两次 下面的查询只返回一条记录,其中T1.COL2='Temporary'。修改后的查询也应该只返回一个结果 SELECT * FROM TABLE1 T1 WHERE T1.COL1='Rajesh' AND T1.COL2='Temporary' AND EXISTS ( SELECT 'Y' FROM TABLE1 T2 WHERE T2.COL1='Rajesh' AND T2.COL2='Permanant')Sql 如何避免仅在一个条件下调用两次select查询以获得差异,sql,database,performance,db2,exists,Sql,Database,Performance,Db2,Exists,下面提到的查询外部查询和内部查询类似,除了一个子句T2.COL2=临时/永久。为适应此子句,select执行两次,导致性能下降。我们可以合并内部查询和外部查询,避免使用exists,也避免调用select两次 下面的查询只返回一条记录,其中T1.COL2='Temporary'。修改后的查询也应该只返回一个结果 SELECT * FROM TABLE1 T1 WHERE T1.COL1='Rajesh' AND T1.COL2='Temporary' AND EXISTS (
提前感谢您的建议 您可以使用窗口功能:
SELECT T1.*
FROM (SELECT T1.*, MIN(COL2) OVER (PARTITION BY T1.COL1) as MIN_COL2
FROM TABLE1 T1
WHERE T1.COL1 = 'Rajesh' AND T1.COL2 IN ('Permanent', 'Temporary')
) T1
WHERE MIN_COL2 = 'Permanent' AND T1.COL2 = 'Temporary';
编辑您的问题,提供示例数据、所需结果,并解释您试图执行的操作。@user6804978。应该这样。