自分用メモ。
・テーブルに対してデータを追加・更新する場合、サブクエリ内に同一テーブルを指定出来ない。
・そういう時はサブクエリ内のFrom句にテンポラリテーブルを指定する。
・サブクエリ内のFrom句はテンポラリテーブルとして扱うことが可能。
・テンポラリテーブルには「AS」キーワードで必ず名前をつけてあげないと怒られる。
・これで「Error 1093 (ER_UPDATE_TABLE_USED)」は回避できるハズ。
自分用メモ。
・テーブルに対してデータを追加・更新する場合、サブクエリ内に同一テーブルを指定出来ない。
・そういう時はサブクエリ内のFrom句にテンポラリテーブルを指定する。
・サブクエリ内のFrom句はテンポラリテーブルとして扱うことが可能。
・テンポラリテーブルには「AS」キーワードで必ず名前をつけてあげないと怒られる。
・これで「Error 1093 (ER_UPDATE_TABLE_USED)」は回避できるハズ。
WEBサーバーとDBサーバーが一緒の場合は「into outfile」文を用いることで
ローカルディスクにCSVエクスポートを行えるが、DBがリモート接続の別サーバーだとこれが出来ない。
そんな時は下記の様にすると幸せになれる模様。
mysql -u [ユーザー名] -p -h [DBサーバーホスト名] [DB名] -e "[実行するSQL文]" | sed -e 's/\t/,/g' > [出力CSVファイルパス]
とても素晴らしい神SQLだね。
めも。
mysqlにログイン時、「-e」オプションに続けてSQLを記述すると
実行したいSQLをmysql側に送りつける事ができる。
mysql -u root -p db_name -e "select * from tbl_name where 1 = 1"
と言った具合。
めも。
select repeat('hoge', 3) ↓ hogehogehoge
めも。
select length('1234567890'); ↓ 10
文字列の中から特定の文字が見つかるまでのインデックス番号を求める方法。
select locate('abc', '00000000abc0000000'); ↓ 9
めも。
select substring('123456789', 2); ↓ 23456789 select substring('123456789', 2, 5); ↓ 23456
第3引数を指定しない場合、第2引数から最後までの文字列が返却される。
ちなみにMySQLの1文字目は0でなく1から始まるので注意されたし。
めも。
select replace('hogehogehoge', 'o', '!!'); ↓ h!!geh!!geh!!ge
分かりやすいね。