Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Önermiyorum - 7 (Update ettiğin tabloyu Where kısmında kullanamazsın)
#11
(04-01-2019, Saat: 09:49)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: MySQL'de aşağıdaki gibi bir güncelleme cümlesi çalışmıyor:

UPDATE Errors
SET
  Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
  ID IN (
          SELECT ID
          FROM Errors
          WHERE
            Message LIKE '%MESSAGE_TEXT%'
        );

Verdiği hata ise şu: "You can't specify target table 'Errors' for update in FROM clause" .

Demek istediği ise, Update ettiğin tabloyu Where kısmında kullanamazsın. Peki, ya sebep ? Allah bilir ne...!!!

Merhaba Üstadım,

Daha önce benzer bir durumla karşılaştım ve temp tablosuz çözmüştüm. Şu şekilde çalışacaktır;

UPDATE Errors
SET
 Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
 ID IN (SELECT * FROM (
         SELECT ID
         FROM Errors
         WHERE
           Message LIKE '%MESSAGE_TEXT%') x
       );

Bu şekilde bir alt sorgu içine alırsanız kontrol edemiyor aynı tablo olduğunu.

İyi çalışmalar...
Cevapla
#12
Güncellediği tabloyu koşul kısmında kısıtladığına göre kendince bazı sebepleri vardır.

Belki bellek performans konusunda endişe etmiş olabilirler.

Faraza milyonlarca kayıt gelirse hepsini belleğe almak yerine kayıtlar arasında dolaşmak istemiştir,
bunu yaparken de kilitlerin çakışmasından kaçınmış olabilir.
Cevapla
#13
Başkaları (nerede ise MySQL hariç hepsi-biraz mübalağa ediyor olabilirim-) bu işi doğru düzgün ve layığı ile yapabiliyor ise -ki yapıyorlar-, o halde My SQL'de yapabilmeliydi. Sizler mazur görürsünüz yada görmezsiniz orasını bilemem, sizlerin bileceği husustur. Ben sadece bilgilendiriyor ve duyduğum rahatsızlığı dile getiriyorum.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#14
(04-01-2019, Saat: 12:23)mad85 Adlı Kullanıcıdan Alıntı:
(04-01-2019, Saat: 09:49)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: MySQL'de aşağıdaki gibi bir güncelleme cümlesi çalışmıyor:

UPDATE Errors
SET
  Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
  ID IN (
          SELECT ID
          FROM Errors
          WHERE
            Message LIKE '%MESSAGE_TEXT%'
        );

Verdiği hata ise şu: "You can't specify target table 'Errors' for update in FROM clause" .

Demek istediği ise, Update ettiğin tabloyu Where kısmında kullanamazsın. Peki, ya sebep ? Allah bilir ne...!!!

Merhaba Üstadım,

Daha önce benzer bir durumla karşılaştım ve temp tablosuz çözmüştüm. Şu şekilde çalışacaktır;

UPDATE Errors
SET
 Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
 ID IN (SELECT * FROM (
         SELECT ID
         FROM Errors
         WHERE
           Message LIKE '%MESSAGE_TEXT%') x
       );

Bu şekilde bir alt sorgu içine alırsanız kontrol edemiyor aynı tablo olduğunu.

İyi çalışmalar...

Teşekkür ederim, bu da Önermiyorum 7.5 olabilir bu durumda Smile
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#15
(04-01-2019, Saat: 13:43)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(04-01-2019, Saat: 12:23)mad85 Adlı Kullanıcıdan Alıntı: Merhaba Üstadım,

Daha önce benzer bir durumla karşılaştım ve temp tablosuz çözmüştüm. Şu şekilde çalışacaktır;

UPDATE Errors
SET
 Message = REPLACE(Message, 'MESSAGE_TEXT', 'DOMATES')
WHERE
 ID IN (SELECT * FROM (
         SELECT ID
         FROM Errors
         WHERE
           Message LIKE '%MESSAGE_TEXT%') x
       );

Bu şekilde bir alt sorgu içine alırsanız kontrol edemiyor aynı tablo olduğunu.

İyi çalışmalar...

Teşekkür ederim, bu da Önermiyorum 7.5 olabilir bu durumda Smile

Rica ederim, Smile
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  iki tabloyu birleştirip hesaplama yapma akuyumcu63 5 168 11-07-2020, Saat: 07:01
Son Yorum: akuyumcu63
  Birden fazla id tutulacak tabloyu parçalamak mı yoksa tek tabloda birleştirmek mi man onurakman 7 1.361 10-01-2020, Saat: 18:23
Son Yorum: adelphiforumz
  Önermiyorum - 4 Tuğrul HELVACI 9 2.810 25-01-2019, Saat: 15:03
Son Yorum: yhackup
  Önermiyorum - 9 (MySQL'de ALTER komutunun olmaması) Tuğrul HELVACI 13 3.260 16-01-2019, Saat: 09:01
Son Yorum: Tuğrul HELVACI
  Önermiyorum - 8 Tuğrul HELVACI 3 1.140 12-01-2019, Saat: 07:57
Son Yorum: Bay_Y



Konuyu Okuyanlar: 1 Ziyaretçi