1

これは私を困惑させました。

MySQL

UPDATE sets SET sets.current_count = (SELECT COUNT(leads_auto.set_id) AS current_count FROM leads_auto WHERE leads_auto.set_id =  (SELECT sets.set_id AS setID FROM sets WHERE sets.on_off = 0)) WHERE sets.on_off = 0

正しいようですね。列の値が 0であるテーブルの値を持つcurrent_count行の総数でレコードを更新します。leads_autoset_idset_idsetson_off

それでも私はこのエラーが発生します

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

私は周りを見回して、誰かがそれが周期的な操作に関係していると言いましたか?

4

1 に答える 1

2

結果の一時テーブルを作成しますSET

UPDATE sets
SET sets.current_count = 
                (
                SELECT COUNT(leads_auto.set_id) AS current_count
                FROM leads_auto
                WHERE leads_auto.set_id = 
                                (
                                    SELECT set_id
                                    FROM
                                    (
                                        SELECT sets.set_id AS setID
                                        FROM sets
                                        WHERE sets.on_off = 0
                                    ) c
                                )
                )
WHERE sets.on_off = 0
于 2012-10-06T15:27:36.433 に答える