我想从不在数据库中的输入中进行选择。
E.g。 SELECT id FROM my_table
返回的值为1,2,3
我希望显示1 -> 'chocolate', 2 -> 'coconut', 3 -> 'pizza'
等SELECT CASE
有效,但过于复杂且难以概述许多值。我想像
SELECT id, array['chocolate','coconut','pizza'][id] FROM my_table
但我无法成功使用数组。有一个简单的解决方案吗?所以这是一个简单的查询,而不是plpgsql脚本或类似的东西。
答案 0 :(得分:8)
with food (fid, name) as (
values
(1, 'chocolate'),
(2, 'coconut'),
(3, 'pizza')
)
select t.id, f.name
from my_table t
join food f on f.fid = t.id;
或没有CTE(但使用相同的想法):
select t.id, f.name
from my_table t
join (
values
(1, 'chocolate'),
(2, 'coconut'),
(3, 'pizza')
) f (fid, name) on f.fid = t.id;
答案 1 :(得分:3)
这是正确的语法:
SELECT id, (array['chocolate','coconut','pizza'])[id] FROM my_table
但是你应该创建一个带有这些值的引用表。
答案 2 :(得分:0)
如何创建另一个枚举所有案例的表,并加入?
CREATE TABLE table_case
(
case_id bigserial NOT NULL,
case_name character varying,
CONSTRAINT table_case_pkey PRIMARY KEY (case_id)
)
WITH (
OIDS=FALSE
);
当您从表中选择时:
SELECT id, case_name FROM my_table
inner join table_case on case_id=my_table_id;