2013-06-10 27 views
5

güncelleştirmesi için hedef tablo 'relProductsPrices' belirtemiyorum eski bir tablo yapısını yükseltir ve en uygun hale getiriyorum. replace into ile düzgün bir şekilde çalışmak için, 2 benzersiz sütun ile etkileşime giren eski zombi girişlerini kaldırıyorum.# 1093 Hatası - FROM yan tümcesi

Sorgu:

DELETE from `relProductsPrices` where `ID` in 

    (SELECT scanA.ID from `relProductsPrices` as scanA 
      inner join `relProductsPrices` as scanB 

    where scanA.ID  < scanB.ID 
    and scanA.product = scanB.product 
    and scanA.priceName = scanB.priceName); 

Hata:

#1093 - You can't specify target table 'relProductsPrices' for update in FROM clause 

Ben şu anda düzgün bir mySQL Sorgu içine bu nasıl emin değilim?

Umarız bu soru, yinelenen giriş değil, benzer, uyarlanabilir bir giriş bulamadık gibi görünüyor. Bu hatayla ilgili sorular var, ama burada hiç güncelleme sorgusu yok ve çoğu insan halihazırda (bir alt seçim oluştur) durumu önceden zaten benim tarafımdan yapılmıştı.

Şimdiden teşekkürler!

+2

çözüm çoğu insan devlet subselect başka düzeyine sahip olmaktır. Sadece bir seviyeniz var. –

cevap

10

bu deneyin:

DELETE FROM `relProductsPrices` 
WHERE `ID` IN ( 
    SELECT 
     tmp.ID 
    FROM (
     SELECT 
     scanA.ID 
     FROM 
     `relProductsPrices` as scanA 
     INNER JOIN `relProductsPrices` as scanB 
     ON scanA.ID  < scanB.ID 
     AND scanA.product = scanB.product 
     AND scanA.priceName = scanB.priceName 
    ) as tmp 
); 
+0

Bunun arkasındaki mantık beni gerçekten şaşırtıyor, ama dürüst olmak gerekirse, bir çekicilik gibi çalışıyor. Bir ton teşekkürler. –

+1

Np, işe yaradığı için mutlu :) @MartinSmith iyi bir alt seviye – Stephan

+0

Yea ihtiyacım olduğuna işaret etti. Ama dürüstçe ... Gerçekten de, çalıştığımdan beri, denediğimden daha mantıklı olduğunu anlamıyorum. Teşekkürler –

İlgili konular