きり丸の技術日記

技術検証したり、資格等をここに残していきます。

MySQLでSQLの使用時に変数を使用する(Not PL/SQL)

タイトルのとおり、MySQLのSQLで変数が使えないか検証したときのメモです。

基本的に変数を使おうとすると、PL/SQLの記事に誘導されてしまうことが多かったです。しかし、素のSQLで変数を使用した検索するための記事があるとうれしいため、この記事を残します。

環境

  • MySQL
    • 5.7
  • SQL Fiddleでも動作確認できます

データセットアップ

CREATE TABLE docs(
id varchar,
created_at timestamp
);

INSERT INTO docs values(1, '2020-01-01');
INSERT INTO docs values(2, '2020-02-01');
INSERT INTO docs values(3, '2020-03-01');
INSERT INTO docs values(4, '2020-04-01');

対応

SET @変数名 = 代入を使用することで変数を定義できます。

SET @id = '1';
SELECT * FROM docs WHERE id = @id;

複数の変数を1度に定義することもできます。

SET @var_name = expr [, @var_name = expr] ...

終わりに

特定のIDに紐づく必要なテーブルを全部検索できるテンプレートのSQLを用意しておいて、そのIDを毎回置換して検索していました。それでも運用はできるのですが、1部だけ別IDを検索したい等で変換すると一括置換ができなくなり、Query ConsoleにゴミSQLが残ってしまっていました。

地味に助かるので、MySQLのプロジェクトに参画するときは使用していきたいと考えています。


この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考情報

f:id:nainaistar:20220116233538p:plain