存在查询的替代方案

时间:2012-08-28 09:23:21

标签: sql

我有以下查询:

update tab1.abc,
tab1.sbd = (select tab2.abc, tab2.sbd from tab2,tab1 where --some conditions)
where exists(select tab2.abc, tab2.sbd from tab2,tab1 where --some conditions)

现在我的任务是优化此查询。

我认为删除exists子句或结合where子句会有很大帮助。 但是怎么做呢?

PS :exists子句已到位,因为如果select子句返回零行,我希望更新的行数为零。

2 个答案:

答案 0 :(得分:1)

JOIN两个表而不是EXISTS。如下所示:

UPDATE tab1
INNER JOIN tab2 ON --some join condition
SET sbd = --something
AND abc = --other something
WHERE --some conditions

答案 1 :(得分:0)

您可以使用IN关键字

update tab1.abc,
tab1.sbd = (select tab2.abc, tab2.sbd from tab2,tab1 where --some  conditions)
where something in 
(select tab2.abc, tab2.sbd from tab2,tab1 where --some conditions)

请参阅以下链接:

IN (TSql)

SQL IN