0

measureid以下のように、2 つのテーブルで一致する行のみを削除したいのですが、このクエリですべての行が削除されます。

delete from temp1 
where exists (select t1.* 
              from temp1 t1, temp2 t2 
              where t2.measureid = t1.measureid)

何を変更する必要がありますか?

4

2 に答える 2

3

使いたくないと思います 使いexistsたいと思いますin

delete from temp1 where measureid in 
    (select t1.measureid from temp1 t1, temp2 t2 where t2.measureid = t1.measureid);

またはさらに良い

delete from temp1 where measureid in 
    (select measureid from temp2);
于 2012-09-10T21:17:55.150 に答える
1

その理由は

select t1.* from temp1 t1, temp2 t2 where t2.measureid = t1.measureid

常に行を返します。おそらくあなたが望んでいたのは

delete from temp1 t1 where exists (select t2.* from temp2 t2 where t2.measureid = t1.measureid)
于 2012-09-10T21:18:21.177 に答える