2009年12月26日土曜日

2009年12月12日土曜日

Simple@Idx 2009/12/12

今年最後のSimpleミーティング。
内容は、
◆jQueryでフォームのUp/Down
◆PHPでセッション使ってDBのCRUD
◆CentOSがインストールできないよ

2009年12月1日火曜日

MySQLでサブクエリ(エラー#1093を回避する方法)

MySQLでもサブクエリーが使えることを思い出して、とあるプロジェクトで使ってみることにした。さくっと、以下のようなSQLを書くと・・・

INSERT INTO exam ( type, code ) VALUES ( 
'A', ( 
    SELECT IFNULL( MAX( code ) + 1, 1000 ) 
    FROM exam WHERE type='A' )
);

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

と怒られてしまった。
正直な話、SQLは得意というわけではないので、 最初はやっぱり無理?と思ってしまった。

が、気を取り直して「mysql 1093」でググってみると、答えのページを発見。MySQLだからではなく、SQL標準から見ても間違った構文なんだそうだ。