こんにちは、さるまりんです。
プログラムを書いてて設定ファイルで持つか、テーブルにするか、うーん、それほどでもないか、みたいな時ないですか?
そんな時に仮に値を持つことができたらと思ってこんなことしてみました。
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では使えないのでその場合の方法はまた考えてみます。
読んでくださってありがとうございました。