hotoolong's blog

RailsやVim、業務で気になったことを綴ってます

MySQL

orderで特定の文字列順に並び替える

数字順で昇順、降順で並び替えるのはよくありますが、 カラムに文字列を設定してしまっていると、並び替えたくなったときにすこし不便ですね。 そんなときにはfieldを使うとうまく並び替えれます。 select id, name from items order by field(items.size, '…

mysqldumpでテーブルを対象、対象外にする

mysqldumpを定期的にするのですが、 対象外にしたいテーブルが複数でてきたときの対応方法をメモしておきます。 ダンプファイルと取るときには直接テーブル名を選択すればいいケースもあります。 以下のコマンドですと一番上を選択してデータベースを指定し…

ActiveRecordでOR文を作るときのエラー対処

少し複雑なSQLのOR文をActiveRecordで作るときにはすこし億劫になりますね。 ArgumentError: Relation passed to #or must be structurally compatible. Incompatible values: [:joins, :references] とエラーが出てしまったのでいろいろ調べてみました。 今…

brew で MySQL8.0をインストールする

MySQL8.0がリリースされましたね。 MySQL8.0の機能 MySQL :: MySQL 8.0: Up to 2x Faster 新機能と以下が上げられています。 Document Store Transactional Data Dictionary SQL Roles utf8mb4 character set が Default に 共通テーブル式の追加 Window関数…

MySQLのgroup_concatをつかって複数の項目を1行に並べる

1対多のテーブル構成を多になっているテーブルの情報をgroup_concatを使って表示したくなるケースがあったのですが、 単純に1カラムのデータだけを表示する場合はそのまま使えばいいのですが、 複数を一気に選択することができず、副問合せして取得しました…

MySQLでユーザ定義変数とcountを組み合わせて失敗した

MySQLでユーザ定義変数を使っていたときのお話です。 ユーザ情報に紐づくアカウント数に合わせて出力する形式を変更して解析しようとしてたのですが、 MySQLのユーザー定義変数をcase文で判断させようとしたところ挙動がおかしくなってしまいました。 ユーザ…

MacでMySQLのサービスの起動停止

MacのMySQLサービスの上げ下げはあまりしないのでよく忘れます。 brewでインストールしてると/usr/local/bin/にmysql.serverを作ってくれるそうです。 -> % which mysql.server /usr/local/bin/mysql.server -> % mysql.server stop Shutting down MySQL ...…

MySQLで正規表現を使って制御文字を抽出

Oracleでは使えなかった正規表現がMySQLで使える!!とおもったらOracleも10gから使えてました。 SQLクリニック(1):Oracle 10gの正規表現で文字列操作を極める (1/2) - @IT携帯からユーザ登録などすると意図せずに改行コードなどの制御文字が登録されて…

REPLACEコマンドでちょっとはまりました

OracleのREPLACEは文字列置換に使いますが、MySQLのREPLACEはレコードが存在しないときにINSERT文に変更して処理してくれる便利なものです。 http://dev.mysql.com/doc/refman/5.1-olh/ja/replace.html ここにリファレンスがあります。OracleでUPDATE更新し…