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 : select 句がゼロ行を返す場合、更新される行数をゼロにしたいので、exists 句が用意されています。

4

2 に答える 2

2

JOINの代わりに 2 つのテーブル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 IN

于 2012-08-28T09:30:18.707 に答える