88

我需要运行一个选择而不实际连接到任何表。我只有一组需要循环的预定义硬编码值:

foo
bar
fooBar

我想遍历这些值。我可以:

select 'foo', 'bar', 'fooBar';

但这会将其返回为一行:

 ?column? | ?column? | ?column? 
----------+----------+----------
 foo      | bar      | fooBar
(1 row)

我正在使用 Postgresql。

4

3 回答 3

132
select a
from (
    values ('foo'), ('bar'), ('fooBar')
) s(a);

http://www.postgresql.org/docs/current/static/queries-values.html

于 2013-04-11T12:24:46.157 回答
35

使用unnest()

将数组扩展为一组行

select unnest(array['foo', 'bar', 'fooBar']);

演示

于 2017-05-28T12:14:26.450 回答
7

Postgres SQL:

对于作为单行和多列表示的静态数据输出,请使用以下查询:

select a,b,c from (values('foo','bar','fooBar')) s(a,b,c);

此 SQL 查询的结果:

在此处输入图像描述

于 2021-02-24T06:09:23.937 回答