はい!今やってます!

Work Pertly, Live Idly

MySQL

「連続〇〇日〇〇しました」みたいなStreakを計算したいときのSQLをMySQLで

Streakを計算したいときに思い出すSQL。 SELECT MAX(streak) AS streak FROM ( SELECT tmp1.*, IF( @prev + INTERVAL 1 DAY = tmp1.date, @streak := @streak + 1, @streak := 1 ) AS streak, @prev := tmp1.date FROM ( SELECT date FROM logs WHERE user_i…

MySQLでauto incrementカラムに0を入力したくなってしまった場合

このコマンドを打てば0も入力できる。 ただし0を0として認識するようになる。 (デフォルトの挙動は0またはnullのときに自動採番) set global sql_mode='NO_AUTO_VALUE_ON_ZERO'; 何故かオペレーションで必要になった。

Duplicateエラーが出る場合の対処法

MySQLでKey Duplicateのエラーが出る場合、 INSERT ... ON DUPLICATE KEY UPDATE の構文を使えば解消出来る場合がある。 INSERT INTO ${table_name} (a, b, c) VALUES (1, 12, 123) ON DUPLICATE KEY UPDATE b = 22, c = 223; 参考 https://dev.mysql.com/do…

直前に投げたSQLの結果件数を取得するSQL

Limit句に関係無く、検索対象の全件数を返してくれる。 SELECT SQL_CALC_FOUND_ROWS * FROM ${table_name} LIMIT ${limit_count}; SELECT FOUND_ROWS(); 全〇〇件中 とか表示したい時に便利

メールアドレスのドメイン部分を一括で置換するSQL

メールアドレスのドメイン部分を一括で置換する UPDATE `test_user` SET `email` = CONCAT( LEFT( `email`, INSTR(`email`, '@') ), 'test.com' ) WHERE `email` NOT LIKE '%@test.com';

メールアドレスのドメイン毎に件数を集計する

select SUBSTRING(email,LOCATE('@',email)) as domain , count(*) as count from user group by domain;

DockerのCentOSイメージを取得して、Railsアプリを動かすまで

新しいものを作りたくなったので、Docker上で動くRailsのプロジェクトを作成。 ハマり所としては、MariaDBを使いたかったのだが、mysql2がサポートしていなかった為使えなかった。 最新版のcentOSイメージを取得する(7.3) docker pull centos:latest docker…

MySQLでデータをファイル出力する

毎回調べてる気がするので… ファイル出力コマンド mysql -u ${user_name} -p ${db_name} > result.tsv //パスワード入力 SQL SELECT * FROM ${table}; Exit quit

MariaDBを5系から10系にアップデートする

WITH句のRecursiveサポート MariaDBの10系のversionupで10.2.2からWITH句のrecursiveがサポートされるようなので、 テストサーバーを5.5から10.2にバージョンアップしようと。 mariadb.com CentOS7 の場合 設定ファイルの中身を生成 MariaDB - Setting up Ma…

Phoenix × Elixir ×MariaDB × Dockerでjsonを返すAPIを開発する (4日目 : DB設定 & API作成編)

前回の記事(Phoenix × ElixirでAPIを開発する (3日目 : DB環境構築編) - はい!今やってます!)に引き続きDBの設定をして、いよいよAPIを作成します。 MariaDBの権限付与 hostname -i //On API Container grant all privileges on *.* to root@'172.%'; flus…

Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (3日目 : DB環境構築編)

前回の記事 (Phoenix × Elixir × MariaDB × Dockerでjsonを返すAPIを開発する (2日目 : 開発環境構築編) - はい!今やってます!) に続いて、DB環境の構築を進めて行きます。PhoenixのデフォルトDBはPostgreDBですが、MariaDBで設定したいと思います。 Docke…