MySQL’de Aynı Tabloda İşlem Yaparken Oluşan Target Hatası

MySQL’de aynı tablo üzerinde silme düzenleme işlemleri yaparken 1093 no’lu hatayı alıyor olabilirsiniz…

1093 no’lu hata şöyle: You can’t specify target table ‘test’ for update in FROM clause

Örneğin şöyle bir sorgu bu hatayı verecektir:

DELETE FROM test WHERE id IN (
    SELECT a.id
    FROM test AS a
    LEFT JOIN test AS b ON a.test = b.test
)

Bu sorgu tüm tabloyu temizleyecektir. Yazı için öylesine yazdığım bir sorgu. Sonra vay efendim bu nasıl sorgu demeyin.

Hata vermemesi için ayrı SELECT içerisinde id’yi alıp bir ALIAS tanımlamamız gerekiyor.

Çalışan sorgu:

DELETE FROM test WHERE id IN (
    SELECT id
    FROM (

    SELECT a.id
    FROM test AS a
    LEFT JOIN test AS b ON a.test = b.test
   ) AS y
)
 
1 Kudos
Don't move

Yorum Yap


Not - Bunları KullanabilirsinizHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>