在一个查询中将值插入多行

时间:2011-02-16 09:05:42

标签: php postgresql

主题建议不是另一个蹩脚的问题;)。所以这是我的疑问:

CREATE TEMP TABLE temp_tab WITH (OIDS) ON COMMIT DROP AS SELECT 22 AS num, 'smth' AS something_else;

SELECT * FROM temp_tab;

我想要完成的是一次在这个临时表中插入多个值,如下所示:

CREATE TEMP TABLE temp_tab WITH (OIDS) ON COMMIT DROP AS SELECT (22, 23, 24) AS num, ('smth', 'wqer', 'asdf') AS something_else;

我之所以没有将数据插入普通表而不是临时表是因为我想使用我的数据库来计算地理点之间的距离(postgis),而且我有很多数据 - 这样做(加上排序)对于PHP来说太详尽了,我不需要存储这些数据 - 我只想进行一些计算并将该集合返回给我的代码。

2 个答案:

答案 0 :(得分:2)

您还可以按照http://www.postgresql.org/docs/9.0/interactive/sql-createtableas.html使用VALUES命令,所以

CREATE TEMP TABLE temp_tab (num integer, something_else char(4))
WITH (OIDS) ON COMMIT DROP AS 
VALUES (22, 'smth'), (23, 'wqer'), (24, 'asdf');

*注意:我没有尝试过查询,因此可能会有拼写错误,但您应该明白这一点。

答案 1 :(得分:1)

我不使用postgresql,但在SQL Server中,您可以使用UNION ALL构建多行文字。这对你有用吗?

CREATE TEMP TABLE temp_tab WITH (OIDS) ON COMMIT DROP AS
SELECT 22 AS num, 'smth' AS something_else union all
select 23, 'wqer' union all
select 24, 'asdf'