0

我有以下查询:

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 子句返回零行,我希望更新的行数为零。

4

2 回答 2

2

JOIN这两个表而不是EXISTS. 类似于以下内容:

UPDATE tab1
INNER JOIN tab2 ON --some join condition
SET sbd = --something
AND abc = --other something
WHERE --some conditions
于 2012-08-28T09:30:39.033 回答
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)

请参阅以下链接:

输入(TSql)

SQL 输入

于 2012-08-28T09:30:18.707 回答