0

私は2つのクエリを持っています:

UPDATE dws_photogallery_albums a 
SET a.photoscount=(
    SELECT COUNT(*) FROM dws_photogallery_photos p 
    WHERE p.albumid=a.albumid)

UPDATE dws_photoportfolio_photos a 
SET a.photoscount=(
    SELECT COUNT(*) FROM dws_photoportfolio_photos p 
    WHERE p.albumid=a.albumid)

最初は問題なく動作しますが、2番目にエラーが発生します:

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

テーブルは同一です (名前のみが異なります)。それは何でしょうか?

UPD:男性、申し訳ありませんが、それは私のミスプリントです。クエリは次のようにする必要があります:

UPDATE dws_photogallery_albums a 
    SET a.photoscount=(
        SELECT COUNT(*) FROM dws_photogallery_photos p 
        WHERE p.albumid=a.albumid)

    UPDATE dws_photoportfolio_albums a 
    SET a.photoscount=(
        SELECT COUNT(*) FROM dws_photoportfolio_photos p 
        WHERE p.albumid=a.albumid)

そして、どちらも私にとってはうまくいきます。回答ありがとうございます。もっとコーヒーが必要です

4

4 に答える 4

2

このクエリを試してください -

UPDATE
  dws_photoportfolio_photos a
  JOIN (
    SELECT albumid, COUNT(*) cnt FROM dws_photoportfolio_photos GROUP BY albumid
  ) p
  ON p.albumid = a.albumid
SET a.photoscount = p.cnt;
于 2012-04-13T08:04:38.553 に答える