MySQL

mysqlのバイナリログが削除できないときにやったこと

はじめに Dockerで開発中に以下のエラーに遭遇 General error: 3 Error writing file '/tmp/MYtPTBrC' (OS errno 28 - No space left on device) はじめましてのエラーだったから解決方法の備忘録 発生環境 Docker / mysql:8.0.26 OS # cat /etc/os-release …

MySQLのDELETE文をEXPLAINで確認する

MySQL5.5でDELETE文をEXPLAINで見ようとしたらエラーになった mysql> EXPLAIN DELETE FROM samples WHERE title = "title"; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version fo…

MySQLで連番のカラムを作成する

いつ使うの? AUTO_INCREMENTのidとは別に仮の連番をMySQLで生成したいとき 前提 ↓みたいなテーブルにMySQLで生成した連番のidを追加する id category 4291 アニメ 11 映画 9302 漫画 322 ドラマ SQL SELECT category, @tmp_id := @tmp_id + 1 tmp_id FROM (…

Laravel の Eloquent ORM でサブクエリを作る

日付単位で number の合計が10以上のレコードのみを抽出する データ id target_date number 1 2021-09-01 1 2 2021-09-02 2 3 2021-09-01 3 4 2021-09-03 4 5 2021-09-04 4 6 2021-09-11 2 7 2021-09-06 5 8 2021-09-12 23 9 2021-09-12 10 10 2021-09-23 20…

テーブルの中で重複しているレコードを抽出する

マスターデータ作るときに何のデータが重複してるかの確認したい時にいつもググってるので整理しておく ただの確認用なのでサブクエリとかは使わない テストデータ id character_name 1 炭治郎 2 伊之助 3 善逸 4 カナヲ 5 禰豆子 6 炭治郎 7 禰豆子 炭治郎…

MySQLのORDER BY でNULLを最後にする

※過去ブログの転記 NULLを含むカラムでORDER BYする SELECT num FROM tbl ORDER BY num ASC ↓ num NULL NULL NULL 1 2 4 6 9 普通に昇順指定するとNULLが最初に来てしまうのて下記のように修正 SELECT num FROM tbl ORDER BY num IS NULL ASC , num ASC ↓ nu…

MySQLのCASE文

使用したことはないけどせっかく覚えたので、一応メモ SELECT (CASE flag WHEN 1 THEN "フラグ1" WHEN 2 THEN "フラグ2" ELSE "その他" END) AS flag FROM users 下記もOK SELECT (CASE WHEN flag = 1 THEN "フラグ1" ELSE "その他" END ) AS flag, (CASE WH…

日毎の登録者数をカウントして歯抜けさせずに日付毎のデータを取得する

※過去ブログの転記 ※転記してて思ったが日付の穴埋めくらいアプリケーション側でやれ id create_time 1 2018-09-05 08:00:00 2 2018-09-05 12:35:00 3 2018-08-21 20:10:22 4 2018-09-02 11:10:48 5 2018-09-03 19:13:14 日付毎にユーザーの登録数を取得した…

DATE_ADD()で特定の日付のn日後・n日前などの日付を取得する

.scroll-table { display: block; overflow-x: scroll; white-space: nowrap; -webkit-overflow-scrolling: touch; } ※過去ブログの転記 create_date 2018-09-05 2018-09-05 2018-09-03 2018-09-02 2018-08-21 n日後などの日付を取得する SELECT create_date…

FIND_IN_SET()でカンマ区切りで登録されたカラムの中から特定の値を検索する

※過去ブログの転記 --- id 3,4,5 2,3 5 1,3,5 4 SELECT * FROM table WHERE FIND_IN_SET('5',id) ↓ カンマ区切りで登録された第二引数のカラムの中から第一引数に指定された値を探す id 3,4,5 5 1,3,5 注意点 文字列の登録など数値以外の登録がある場合は使…

SELECT文の基本構文と実行順序

※過去ブログの転記 構文記述例 構文記述順 実行順序 構文記述例 SELECT field1, field2 FROM tableA, tableB AS tblB LEFT JOIN tableC ON tableC.field3 = tblB.field2 WHERE field1 = 1 AND field2 = 2 AND field4 LIKE '%aaa%' GROUP BY field1, field2 A…

テーブルの結合について

※過去ブログの転記 今まで曖昧にしていた結合についてちゃんとまとめておく 内部結合INNER JOIN / 外部結合LEFT(RIGHT) OUTER JOIN 記述例 要点 LEFTとRIGHTの違い 補足 クロス結合CROSS JOIN 記述例 要点 補足 条件指定なし 条件指定あり 和結合UNION (DIST…

特定のカラムから合計を算出して算出した値をWHERE句で抽出したい

※過去ブログの転記 MySQLを使って表題の件をやりたかったけど1054 Unknown columnでうまく動かなかったので忘れないようにメモ ID user_id point 1 1 30 2 1 40 3 1 4 4 1 6 5 2 3 6 2 7 上記のようなテーブルを使用して以下結果のように合計を出してからWHE…