是否可以从RETURNING子句中获取DISTINCT行?

Gna*_*nam 1 postgresql sql-returning

我们正在使用PostgreSQL v8.2.3.

是否可以使用RETURNING 子句从UPDATE语句中获取DISTINCT行?

MYTABLE列是:

  1. APRIMARYKEYCOLUMN
  2. ABOOLEANCOLUMN
  3. 电子邮件
  4. COLUMN1
  5. COLUMN2
  6. 栏3

使用RETURNING子句查询更新:

UPDATE MYTABLE SET ABOOLEANCOLUMN = true FROM MYTEMPTABLE WHERE EMAIL =
MYTEMPTABLE.EMAIL RETURNING EMAIL, COLUMN1, COLUMN2, COLUMN3;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望从这些列返回不同的行:EMAIL,COLUMN1,COLUMN2,COLUMN3.

我甚至尝试了一些获取不同行的方法,但它不起作用.虽然我仍然可以在应用层解决这个问题,但我试图找出是否可以在查询级别解决/控制.任何不同的想法/建议表示赞赏.

小智 8

这是一个古老的问题,但由于它是搜索中的第一个答案,而答案已经过时了,我正在分享.

使用自PG版本8.4以来可用的公用表表达式(CTE),您可以更新/删除并获得不同的结果.

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;
Run Code Online (Sandbox Code Playgroud)