【MySQL】MySQLの備忘録1【MariaDB】





 

1 MySQL小ネタ(シーケンス、MAX値での絞り込み)

久々に仕事でSQLを書いたので

1.1 手動でシーケンス

インクリメントしたる!

--シーケンス用の列をインクリメントしつつInsertする
INSERT INTO tbl_sample(name, seq_id, regist_datetime)
  VALUES
('Ahoaho Man',
  (SELECT COALESCE(MAX(seq_id), 0) FROM tbl_sample) + 1,
  now()
);

1.2 JOIN(MAX、最新履歴とのJOIN)

履歴テーブル的なものとJOINして、最新の1行のみ取りたいとき!

--1対nの紐づけで、n側を最新の履歴、最大値などで絞る場合
--もうちょっと効率よくかけそう・・
SELECT tbl1.name, tbl1.seq_id, tbl2.work_name FROM tbl_sample tbl1
  LEFT OUTER JOIN
  (SELECT worker_id, MAX(work_datetime) AS work_datetime FROM work_history GROUP BY work_cd) AS tbl2_latest
  ON  (
    tbl2_latest.manager_id = tbl1.seq_id
  )
  LEFT OUTER JOIN
    work_history tbl2
  ON  (
    tbl2.worker_id = tbl2_latest.worker_id
    AND tbl2.work_datetime = tbl2_latest.work_datetime
    AND tbl2.manager_id = tbl1.seq_id
  );






You may also like...