1

私はデータ行に非常に大きな問題を抱えています.8行しかないはずなのに最大1k行になり、削除する必要があるすべての行を取得するSQLクエリが付属しています。 ...

編集:また、重複する理由はPKEYではありません

select  a1.ID, a1.serie, a1.tienda, a1.numtransa, a1.sistema, a1.factura, a1.jfecha, a1.codart from posmov a1
inner join posmov a2
on a1.tienda = a2.tienda
and a1.numtransa = a2.numtransa
and a1.sistema= a2.sistema
and a1.factura =a2.factura
and a1.jfecha = a2.jfecha
and a1.codart = a2.codart
and a1.serie =a2.serie
and a1.ID > a2.ID;

しかし、それらを削除したい場合は、最後のクエリに追加します

delete from posmov
where ID  in ( LAST QUERY);

私は得る..

Msg 116, Level 16, State 1, Line 30
Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

もっと簡単な方法があれば、誰かが私に教えてくれますか、クエリを実行するか、実際に重複を削除してください。

4

1 に答える 1

2

クエリで ID を選択するだけで、使用するたびにIN値 ('1'、'2'、'3') をリストできます。または、サブクエリから単一のフィールドを選択できますが、複数のフィールドは選択できません。

delete from posmov
where ID  in (
              select  a1.ID
              inner join posmov a2
              on a1.tienda = a2.tienda
              and a1.numtransa = a2.numtransa
              and a1.sistema= a2.sistema
              and a1.factura =a2.factura
              and a1.jfecha = a2.jfecha
              and a1.codart = a2.codart
              and a1.serie =a2.serie
              and a1.ID > a2.ID)

または、次を使用できますEXISTS

delete from posmov
where EXISTS ( LAST QUERY);
于 2013-07-18T22:14:36.390 に答える