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

时间:2011-02-17 07:53:16

标签: postgresql sql-returning

我们正在使用PostgreSQL v8.2.3。

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

MYTABLE 列是:

  1. APRIMARYKEYCOLUMN
  2. ABOOLEANCOLUMN
  3. EMAIL
  4. COLUMN1
  5. COLUMN2
  6. 栏3
  7. 使用RETURNING子句查询更新:

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

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

    我甚至尝试了一些获取不同行的方法,但它不起作用。 虽然我仍然可以在应用层解决这个问题,但我正试图找到 是否可以在查询级别解决/控制。任何不同 我们非常感谢您的建议/建议。

2 个答案:

答案 0 :(得分:7)

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

使用自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;

答案 1 :(得分:2)

不,你不能。 RETURNING很棒,但它与普通的SELECT语句不同。 RETURNING是基于记录的,不是基于记录的。 DISTINCT适用于一组。