こんにちは、さるまりんです。
プログラムを書いてて設定ファイルで持つか、テーブルにするか、うーん、それほどでもないか、みたいな時ないですか?
そんな時に仮に値を持つことができたらと思ってこんなことしてみました。
VALUESを使って以下のようなSELECTを書きました。
SELECT * FROM (
VALUES('りんご', 'red'), ('ぶどう', 'purple'), ('みかん', 'orange'), ('メロン', 'green')
) fruits(name, color);
実行するとこんな感じです。
salu=> SELECT * FROM (
salu(> VALUES('りんご', 'red'), ('ぶどう', 'purple'), ('みかん', 'orange'), (' メロン', 'green')
salu(> ) fruits(name, color);
name | color
--------+--------
りんご | red
ぶどう | purple
みかん | orange
メロン | green
(4 rows)
nameとcolorのカラムを持つfruitsというテーブルの検索結果のように出力されています。
これをテーブルとして使うことができるのでこんなこともできます。
SELECT * FROM (
VALUES('りんご', 'red'), ('ぶどう', 'purple'), ('みかん', 'orange'), ('メロン', 'green')
) fruits(name, color)
WHERE color = 'orange';
WHEREでcolorがorangeのものに絞ってみました。
実行すると、
salu=> SELECT * FROM (
salu(> VALUES('りんご', 'red'), ('ぶどう', 'purple'), ('みかん', 'orange'), (' メロン', 'green')
salu(> ) fruits(name, color)
salu-> WHERE color = 'orange';
name | color
--------+--------
みかん | orange
(1 row)
出力されているのはcolor=’orange’の「みかん」の1レコードだけです。
WHEREできるんだったら、他のテーブルとJOINしたりといろんな使い方ができそうです。
小さな設定値を持たせるなど、実テーブルにする必要もないものをこんな風に仮のメモリー上のテーブルとしてVALUESで作成して利用すると便利なこともあるかも。
これMySQLでは使えないのでその場合の方法はまた考えてみます。
読んでくださってありがとうございました。