sql

627. Swap Salary

LeetCode の挑戦ログ Problem https://leetcode.com/problems/swap-salary/ salary テーブルの性別を入れ替える f の行は m に m の行は f に Solution UPDATE salary SET sex = ( CASE WHEN sex = 'f' THEN 'm' ELSE 'f' END ); Impressions CASE 文便利

MySQL で日付の疑似表を作る #mysql

概要 MySQL で日付の疑似表を作るクエリ。 集計分析等で、データがない日付も一覧としては出したいようなケースでの利用を想定。 TL;DR 色々試してみたけど、以下に落ち着いた。 SELECT @seq := 0 AS seq , DATE('2020-01-01') AS ymd FROM dual UNION ALL S…

MySQLでカラムの値から一部を取り出す

こんなテーブルと値があるとする。 id(number) profile(varchar) 1 sex:male, name:yamada, age:30 2 sex:female, name:sato, age:20 ここから、nameの値だけを取り出すことを目的にする。 name yamada sato SQL select LEFT( SUBSTRING( profile, LOCATE('n…

MySQLではIN句とサブクエリの組み合わせはインデックスが効かない #mysql

概要 タイトルそのまま。 MySQLは仕様として * サブクエリを含むSQLは外側から先に実行される * IN句とサブクエリの組み合わせは内部的にEXISTSに変換する 対策 サブクエリの使用を避ける JOINに書き換える サブクエリを切り出してSQLを組み立てる(2回SQL…

select * from がダメな理由

sql

概要 select * from ~ のように、アスタリスクで取得項目を絞らないことが性能に悪影響を与えるのはなぜだろうか? ワーキングメモリを無駄遣いする可能性 不要なカラムを大量に読み込んで処理する場合、その分余計なメモリを使用することになる。 ワーキン…