- MySQL
- 2012-11-22 - 更新:2012-12-17
テーブルAにあってテーブルBにないデータを見つけたいとき、
ACCESSでいうところの「不一致クエリ」を使います。
select TABLE_A.* from TABLE_A left join TABLE_B on TABLE_A.ID = TABLE_B.ID where (TABLE_B.ID Is Null);
4,780 views
テーブルAにあってテーブルBにないデータを見つけたいとき、
ACCESSでいうところの「不一致クエリ」を使います。
select TABLE_A.* from TABLE_A left join TABLE_B on TABLE_A.ID = TABLE_B.ID where (TABLE_B.ID Is Null);
一発で出来て便利な方法を見つけたので、書いておきます。
ただ、入力の場合、フィールド数は同じである必要があります。
【出力】
書式
SELECT * FROM [TABLE] INTO OUTFILE "[ファイルのパス]" FIELDS TERMINATED BY "[区切り文字]" OPTIONALLY ENCLOSED BY '[囲み文字]' LINES TERMINATED BY "[改行コード]";
MySQLで実行する場合
SELECT * FROM [TABLE] INTO OUTFILE "[ファイルのパス]" FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";
PHPで実行する場合(SQL文以外省略しています)
select * from [TABLE] into outfile \"[ファイルのパス]\" fields terminated by \",\" optionally enclosed by '\"' lines terminated by \"\r\n\"
【入力】
load data infile \"[ファイルのパス]\" into table [テーブル名] fields terminated by \"[区切り文字]\" enclosed by '[囲み文字]' lines terminated by \"[改行コード]\"
MySQLで実行する場合
LOAD DATA INFILE "/tmp/temporary.csv" INTO TABLE TABLE FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\r\n";
PHPで実行する場合(SQL文以外省略しています)
load data infile \"/tmp/temporary.csv\" into table TABLE fields terminated by \",\" enclosed by '\"' lines terminated by \"\r\n\"
複数のフィールドでソートをしたい場合、order by句にカンマで区切り、指定します。
例)「field1」で昇順に並べ替え、「field1」が同じ値であれば「field2」を降順に並べ替えます。
select * from tablename order by field1, field2 desc
※昇順・降順はフィールド毎に指定する
上の例で「field1」も降順にしたい場合は
select * from tablename order by field1 desc, field2 desc
とする
コマンドラインからMySQLに接続する基本書式
mysql -h [ホスト名] -u [ユーザー名] -p -D [データベース名] mysql --host=[ホスト名] --user=[ユーザー名] -p -database=[データベース名]
localhost
の場合、ホストは省略可能です。
コマンドを入力するとパスワードを聞かれるので入力します。
パスワードを予め入力する場合は次のようにオプションで指定します。
パスワードに限ってはオプションとの間に空白を入れないよう注意してください。
-p[パスワード] --password=[パスワード]
show databases
で情報を表示。
use
コマンドでDBを選択。
show table status
でテーブル情報を表示。
ロック状態を確認する
SELECT trx_rows_locked FROM information_schema.INNODB_TRX;
ロックがかかっている行数が確認できます。
スレッド情報を表示し、ロックがかかっているスレッドを特定する
SHOW ENGINE INNODB STATUS\G
スレッドIDが確認できたらプロセス一覧を表示します。
スレッドIDとプロセスIDはイコールです。
show processlist;
ロックがかかってしまっているプロセスを強制終了します。
KILL [プロセスID];