Можно ли получить строки DISTINCT из предложения RETURNING? - PullRequest
1 голос
/ 17 февраля 2011

Мы используем PostgreSQL v8.2.3.

Возможно ли получить строки DISTINCT из оператора UPDATE, используя предложение RETURNING ?

MYTABLE столбцы:

  1. APRIMARYKEYCOLUMN
  2. ABOOLEANCOLUMN
  3. EMAIL
  4. COLUMN1
  5. COLUMN2
  6. COLUMN3

ОБНОВЛЕНИЕ с использованием запроса предложения RETURNING:

UPDATE MYTABLE SET ABOOLEANCOLUMN = true FROM MYTEMPTABLE WHERE EMAIL =
MYTEMPTABLE.EMAIL RETURNING EMAIL, COLUMN1, COLUMN2, COLUMN3;

Здесь в этом случае я ожидаю вернуть отдельные строки из этих столбцов: EMAIL, COLUMN1, COLUMN2, COLUMN3.

Я даже попробовал некоторые способы получения отдельных строк, но это не работает.Хотя я все еще могу решить это на прикладном уровне, я пытаюсь выяснить, можно ли это решить / контролировать на уровне запросов.Любые разные идеи / предложения приветствуются.

Ответы [ 2 ]

8 голосов
/ 01 августа 2017

Это старый вопрос, но так как он появился как первый ответ в поиске, и этот ответ устарел, я делюсь им.PG версии 8.4 вы можете обновить / удалить и получить отличный результат.

WITH updater AS
(
  UPDATE MYTABLE SET ABOOLEANCOLUMN = true FROM MYTEMPTABLE WHERE EMAIL = MYTEMPTABLE.EMAIL RETURNING EMAIL, COLUMN1, COLUMN2, COLUMN3
)
SELECT DISTINCT EMAIL, COLUMN1, COLUMN2, COLUMN3
FROM updater;
2 голосов
/ 17 февраля 2011

Нет, ты не можешь. RETURNING - это здорово, но это не то же самое, что обычный оператор SELECT. ВОЗВРАТ основан на записи, а не на основе набора. DISTINCT работает на съемочной площадке.

...