SORU
5 EYLÜL 2008, Cuma


1093 - 't belirtin güncelleme için hedef tablo MySQL Hata tümcesi

Bir tablo bozuk girdileri ile benim veritabanında story_category var. Sonraki sorgu bozuk girdileri verir:

SELECT * 
FROM  story_category 
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category INNER JOIN 
       story_category ON category_id=category.id);

Onları infaz silmeye çalıştım:

DELETE FROM story_category 
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id);

Ama bir sonraki hata alıyorum:

#1093 - hedef tablo 'story_category' tümcesi . GELEN güncelleştirme için belirtebilirsiniz

Bunu nasıl bitireceğim?

CEVAP
5 EYLÜL 2008, Cuma


Güncelleme: Bu cevap genel hata sınıflandırma kapsar. En iyi OP tam sorgu işlemek için nasıl hakkında daha ayrıntılı bir cevap için lütfen DanDarc's answer bkz

MySQL SEÇİN bölümünde kullandığınız aynı tabloyu değiştiremezsiniz.
Bu davranışlarına belgelenmiştir: http://dev.mysql.com/doc/refman/5.6/en/update.html

İç içe sorgu kullanarak durdurmak ve iki bölümden operasyon yürütmek gerekir, veya alternatif olarak basit bir yan.

Aşağıda Baron Schwartz, published at Nabble dan:

Ancak, yapabileceğiniz çok tablo güncellemeleri gibi bu:

UPDATE tbl AS a
  INNER JOIN tbl AS b ON ....
  SET a.col = b.col

Kesinlikle alt sorgu lazım, geçici bir çözüm var, ama eğer çeşitli nedenlerden dolayı çirkin, performans dahil

UPDATE tbl SET col = (
  SELECT ... FROM (SELECT.... FROM) AS x);

FROM yan tümcesi iç içe sorgu örtülü bir geçici oluşturur tablo, bu yüzden güncellemenizi aynı tablo sayılmaz.

Read more

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Austin Evans

    Austin Evans

    5 AĞUSTOS 2007
  • EvilControllers

    EvilControll

    20 Ocak 2008
  • Skittles Page

    Skittles Pag

    28 Mart 2011