1

これが私のフィドルです。私のクエリ:

update foos
set foo_id = ((SELECT max_foo_id FROM (SELECT MAX(foo_id) AS max_foo_id FROM foos) AS temp_foos) + 1)
where foo_id is null; 

foo_ids の値1, 2, 2, 2を生成します (サブクエリは 1 回だけ実行されますか?) しかし、私はそれを私に与えたいです1, 2, 3, 4

4

1 に答える 1

2

これはどう?

UPDATE  foos a
        INNER JOIN
        (
            SELECT  a.bar_ID,
                    @rn := @rn + 1 row_Num
            FROM    foos a,(SELECT @rn := (SELECT MAX(foo_ID) FROM foos)) b
            WHERE   a.foo_ID IS NULL
        ) b ON a.bar_ID = b.bar_ID
SET     a.foo_id = b.row_Num

更新 1

于 2013-05-02T01:21:13.053 に答える