Kinopyo Blog

プログラマとしてRuby, Rails, iPhone, iPad,Macなどなどと向き合う日々のログポース

Archive for the ‘MySQL’ Category

MySQL, OracleのGroup by date, 日付別で集計

2011年08月17日

これが既存データで、同じ日に複数のデータがある。

期望結果はこれ、つまり日付別で集計したい場合

MySQLではDATE関数を使う


mysql> SELECT DATE(create_datetime), COUNT(*) FROM user_m GROUP BY DATE(create_datetime);

Oracleではto_char関数を使う


SELECT to_char(create_datetime, 'YYYY-MM-DD'), COUNT(*) FROM user_m GROUP BY to_char(create_datetime, 'YYYY-MM-DD');

参考

http://blog.asial.co.jp/209

http://d.hatena.ne.jp/bingo_nakanishi_perl/20090530/1243649406

MySQL: SQL文のテキストファイルを実行するには

2010年12月07日

1000件くらいのinsert文を用意して、それをコピって一気にmysqlのコマンドラインに貼りつけたらうまく行かなかったんです。sql文に文法的間違いがなくてもエラーとなったり、表示が崩れたりしました。数件なら多分まだいいんですけど、さすが1000件だと(コマンドラインに貼り付けるやり方では)処理が追えない気がします。

それらのsql文をファイルに保存し実行すれば問題なかったので、以下がそのコマンドです。

mysql> source file_name
--あるいは
mysql> \. file_name

また下記文を書けば進捗情報が見れるとMySQLのレファレンスで書かれてますが、時間の関係上今回は試してませんでした。

SELECT '<info_to_display>' AS ' ';

参考:

http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html

MySQL autocommitでトランザクションを制御する

autocommitの値を持ちましてMySQLでのトランザクションを制御できます。

--暗黙(自動)コミットを無効に
SET AUTOCOMMIT = 0;
--トランザクション開始
BEGIN;

--SQL文をながす
UPDATE...
INSERT...
...

--コミット
COMMIT;
--あるいはロールバック
ROLLBACK;

--暗黙(自動)コミットを有効に
SET AUTOCOMMIT = 1;

--暗黙(自動)コミットのステータスを確認
SELECT @@AUTOCOMMIT;