GROUP BY -> WITH ROLLUP
MySQL:5.5.27, 5.5.38
MySQL:12.17.2 GROUP BY Modifiers
集計の集計をしてくれる。
WITH ROLLUP をつけると、こういう風に集計できる。
黄色い網掛けは、国別集計。
緑の網掛けは、年度集計。
赤の網掛けは、全体集計。
素晴らしい!
FLATZ:MySQLの知っていると便利な構文(その2)
MySQL:12.17.2 GROUP BY Modifiers
集計の集計をしてくれる。
WITH ROLLUP をつけると、こういう風に集計できる。
黄色い網掛けは、国別集計。
緑の網掛けは、年度集計。
赤の網掛けは、全体集計。
素晴らしい!
FLATZ:MySQLの知っていると便利な構文(その2)
日付関数は便利~! 😎
MySQL の勉強は遅れてしまってるにゃ><
MySQL:12.7 Date and Time Functions
DATE, TIME, DATETIME, TIMESTAMP, YEAR 型のフィールドに対して使える関数。
YEAR(date):年だけ返す
MONTH(date):月だけ返す
DAY(date):日だけ返す
DAYNAME(date):曜日だけ返す
※ date は日付型のカラム名
これを hoge テーブルに使うと
year | num |
---|---|
2014 | 3 |
2014 | 2 |
2015 | 6 |
これだと、だから? ってなっちゃうけど、集計を考えるとすぐわかる。
年別の個数集計は、下記のように取れる。
year | num |
---|---|
2014 | 5 |
2015 | 6 |
素敵~♪
MySQL:DATE_FORMAT(date,format)
日付データをフォーマットして返す
これで date カラムのデータを YYYY-MM というフォーマットへ変換し
重複行を除いて取り出してくれる。
フォーマット指定方法については、マニュアル参照。
MySQL:EXTRACT(unit FROM date)
EXTRACT():指定した部分だけ返す
YEAR なんかの複合型。
これもすごい~!
FLATZ:MySQLの知っていると便利な構文(その2)
→2007年の記事なのに、検索の2番目に出てきた。すごいね~。ありがとうございます!
ON DUPLICATE KEY UPDATE という、すごく便利な命令を随分前に知って使っていたけど、まだまだ奥が深かったので、メモ。
これで
・新しいレコードを挿入してね
・値は、id が val1 で、name は val2 でお願いね
・でももし val1 という値が id に既にあったら、そのレコードの name を val2 で上書きしてね
というお願いになる。
便利だよね~。
事前に存在を確認して、あれば UPDATE、なければ INSERT を発行する、という手間がなくなった。
ここで「でももし val1 という値が id に既にあったら」この部分について。
特定のキーとは、Uniqueキーとして登録してあるか、Primary Keyとして登録してある必要がありますが、1つのカラムに限らず、複数のカラムでも一つの Uniqueキー(Primary Key)の設定を行うことで対応が可能です。
ただ、Uniqueキーの設定が必要ですので、設定するカラムで複数レコードが存在するような仕組みの場合は利用することはできません。— snip —
「Unique」は、nullは重複しないと見なします。
「Primary Key」は、nullは重複するとみなすため、nullを入れようとするとエラーになります。有限会社 エス技研:Insert On Duplicate Key Update構文の使い方
ふむふむ。キー周りの知識が怪しいので、ひとまずはこれにて。
参考サイトを読み取っただけで、実証していない。
このとき
このようにすることで、id が被った場合は、point に val3 を上書きするのではなく、元の値に val3 を加算して上書きする。
こうすると、元の値に 10 を加算して上書きする。(新しい値 val3 は無視)
すごい。。。でも、少し複雑になってきた。
CASE や IF も使えるらしい・・・。
すぐにはわからないので、丸コピー。
DUPLICATE KEY UPDATE にはCASEやIFが使えるので、フィールド毎に更新条件を設定できる。
デフォルト値を使って値を更新されないようにもできる。
プリペアドステートメントを利用する場合は、下記のように記述。
同じ結果を得られるものとして、REPLACE 文がある。
両者の違いは、下記の通りらしい。
ON DUPLICATE KEY UPDATE:UPDATE
Replace:DELETE & INSERT
Qiita:MySQL: INSERT…ON DUPLICATE KEY UPDATEまとめ
極上の人生:MySQL でプレースホルダを使ったINSERT … ON DUPLICATE KEY UPDATE 文を書く
有限会社 エス技研:Insert On Duplicate Key Update構文の使い方
ずぅっとお世話になりっ放しの MySQL さん。
今更だけど、目次を追加。
丸っきりの書きかけ項目は Not found になる。
MySQL Workbench の Download Now リンクより
プラットフォームを選択して、希望する項目の Download ボタンをクリック。
私は以下を選択した。
プラットフォーム:Microsoft Windows
ファイル:Windows (x86, 32-bit), MSI Installer
( mysql-workbench-gpl-5.2.35-win32.msi )
ログインページが現れるので
ログインまたは登録する。
後はリンクから DL 。
私はインストーラ付きなのでダブルクリックでOK。
と思いきや、Visual C++ 2010 Runtime がないからインストールできねーよ。
と言われるので
Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)
ここから DL してインストール。
今度こそ~と、ダブルクリック。
後は普通にインストールできる。
ありがたいことに日本語化パッチを配布してくださっている方がおられる。
感謝感謝♪
SOURCEFORGE.JP:OSS_Ja_JPN こちらより
mysql-workbench-gpl_5.2.34_ja6.deb を DL 。
(ちょこっとだけリヴィジョンが違うが気にしない)
で、どうやってパッチを当てればいいのか試行錯誤したけ。
deb なんていう拡張子とは初対面だし・・・ね・・・。
でも、deb を tar.gz に変更すると解凍できるそうで
拡張子を変更して解凍。
そこで出てきた
data フォルダの中に
また data フォルダが存在する。
そこで MySQL Workbench インストールディレクトリ内にある
data ディレクトリをリネームし、新たに先ほど解凍して出てきた data ディレクトリ
を、MySQL Workbench インストールディレクトリ内に配置。
これでローカライズ完成。
MySQL Workbench が便利です