2009-10-30
MySQLの書き順による、カラムの処理順序
MySQL | |
MySQL系で以下の update文を実行して驚いた!
table xxxxx
| pkey | col1 | col2 |
|---|---|---|
| 1 | aaaaa | ccccc |
上記のようなテーブルにデータがある場合に以下のSQLを実行すると
update xxxxx set col2 = col1 ,col1 = 'bbbbb' where pkey = 1 ;
以下のように更新される
| pkey | col1 | col2 |
|---|---|---|
| 1 | bbbbb | aaaaa |
ところが、SQL文を以下のように書き換えると
update xxxxx set col1 = 'bbbbb' ,col2 = col1 where pkey = 1 ;
結果がこうなる。
| pkey | col1 | col2 |
|---|---|---|
| 1 | bbbbb | bbbbb |
えええええええ、そうなの????
| pkey | col1 | col2 |
|---|---|---|
| 1 | bbbbb | aaaaa |
じゃないの???
PostgreSQLだと、同一クエリー内で書き順は関係なく
並列に処理されましたが、MySQLの場合はそうではないんですね。
書いた順番のカラムごとに処理をしていくから、
下位の処理は上位の処理の影響をもろに受ける。
処理は並列ではなく直列でした。
知らなかった。。。。
今まで書いてたSQL文に一抹の不安を覚えた。
コメントを書く
トラックバック - http://d.hatena.ne.jp/bushimichi/20091030/1256828976
リンク元
- 16 http://d.hatena.ne.jp/
- 8 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=3T2&q=php+date+加算&btnG=検索&lr=lang_ja&aq=f&oq=
- 6 http://sakaki0214.com/2009/10/30022723.html
- 4 http://www.jextend.com/sample/cs.html
- 2 http://clip.livedoor.com/clip/add?link=http://d.hatena.ne.jp/bushimichi/20091008/1254973137&title=JQueryで連続した半角英数字を任意の場?%
- 2 http://reader.livedoor.com/reader/
- 2 http://www.google.co.jp/search?hl=ja&q=ファイル 文字コード 確認 linux コマンド&lr=&aq=f&oq=
- 2 http://www.google.co.jp/search?hl=ja&q=java+リモートipアドレス+取得&lr=&aq=f&oq=
- 2 http://www.google.co.jp/search?hl=ja&q=postgresql+ポート&btnG=検索&lr=&aq=0r&oq=postgresql po-to
- 1 http://74.125.153.132/search?q=cache:pwChHwguHUkJ:d.hatena.ne.jp/bushimichi/20080213/1202914027+IE+pre+改行&cd=2&hl=ja&ct=clnk&gl=jp&lr=lang_ja&client=firefox



