Tur*_*tle 9 postgresql postgresql-8.1
我想从不在数据库中的enumaration中进行选择.
例如,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
Run Code Online (Sandbox Code Playgroud)
但我无法成功使用数组.有一个简单的解决方案吗?所以这是一个简单的查询,而不是plpgsql脚本或类似的东西.
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;
Run Code Online (Sandbox Code Playgroud)
或没有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;
Run Code Online (Sandbox Code Playgroud)
创建另一个表来枚举所有案例并执行 join 怎么样?
CREATE TABLE table_case
(
case_id bigserial NOT NULL,
case_name character varying,
CONSTRAINT table_case_pkey PRIMARY KEY (case_id)
)
WITH (
OIDS=FALSE
);
Run Code Online (Sandbox Code Playgroud)
当您从表中选择时:
SELECT id, case_name FROM my_table
inner join table_case on case_id=my_table_id;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4799 次 |
| 最近记录: |