17573


例えば  
`SELECT genre, STD(point) FROM table GROUP BY genre;`  
の結果をgenre_std等に代入したいです。

とりあえず手動で  
`UPDATE table SET genre_std = 100 WHERE genre = 1;`  
:  
:  
等としているのですが、効率的なやり方がありそうなので


CC BY-SA 3.0
2015-10-13T02:08:53.197
17572
2015-10-13T05:32:27.170
2015-10-13T03:21:18.840
525
525
question
mysql
計算結果をカラムに代入したい


サブクエリを使って以下の様に書いてみました。

[code]

    UPDATE
      table t1,
      (
        SELECT genre, STD(point) AS std
        FROM table GROUP BY genre
      ) t2
    SET
      t1.genre_std = t2.std
    WHERE
      t1.genre = t2.genre
    
[/code]


CC BY-SA 3.0
2015-10-13T02:41:56.563
17573
2015-10-13T02:41:56.563
17572
answer


MySQLではupdate文にcross joinが使えるので次のように書けます。

[code]

    UPDATE table A,
    (SELECT genre, STD(point) point_std FROM table GROUP BY genre) B
    set genre_std = point_std
    where A.genre = B.genre;
    
[/code]


CC BY-SA 3.0
2015-10-13T05:32:27.170
17588
2015-10-13T05:32:27.170
12620
17572
answer