非効率も効率

筆者のパソコン関連や効率化についての考察と雑談

SQLの文法の違いに悩む

普段はOracleSQLを書いているのですが、今はMySQLSQLを書いています。

同じ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では通るのですが。


こういうので、ちょくちょく時間を消費して、中々先に進まないのです。