Вставьте значения в несколько строк в одном запросе - PullRequest
0 голосов
/ 16 февраля 2011

Это не другой неубедительный вопрос, как предполагает тема;).Итак, вот мой запрос:

<strong>CREATE TEMP TABLE temp_tab WITH (OIDS) ON COMMIT DROP AS SELECT 22 AS num, 'smth' AS something_else;</strong><br /><br /> <strong>SELECT * FROM temp_tab;</strong>

То, что я пытаюсь сделать, это вставить в эту временную таблицу более одного значения за один раз, например:

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

Причина, по которой я не вставляю данные в обычную таблицу, а не в temp, заключается в том, что я хочу использовать свою базу данных для вычисления расстояний между географическими точками (postgis), и у меня многоданных - выполнение этого (плюс сортировка) было бы слишком исчерпывающим для php, и мне не нужно хранить эти данные - я просто хочу сделать некоторые вычисления и вернуть набор в мой код.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Вы также можете использовать команду VALUES согласно http://www.postgresql.org/docs/9.0/interactive/sql-createtableas.html,, поэтому

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 голос
/ 16 февраля 2011

Я не использую 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...