SQLの文法の違いに悩む
普段はOracleでSQLを書いているのですが、今はMySQLでSQLを書いています。
同じSQLでも関数や文法、動作が微妙に違っていたりして、Oracleの感覚で書いていると痛い目見ますね。
そして、今回ドツボにハマったのが以下のSQLです。
-- テスト用テーブルを作成 create table table_a (name char(10)) ; create table table_b (name char(10)) ; -- table_aにデータを作成 insert into table_a (name) values ('A') ; -- table_aからtable_bにデータコピー -- ↓エラー発生 insert into table_b tb (tb.name) select ta.name from table_a ta ; -- SQL エラー (1064): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tb (tb.name) select ta.name from table_a ta' at line 1 -- ↓正常に動作 insert into table_b (name) select ta.name from table_a ta ;
単純に、Table_bのSelect結果をTable_bに入れたいだけなのに・・・
で、エラーが発生するSQLと発生しないSQLの違いはTable_bに別名を付けているかどうかでした。
個人的にえーって感じです。Oracleでは通るのですが。
こういうので、ちょくちょく時間を消費して、中々先に進まないのです。