gpt4 book ai didi

sql - 使用 unnest() 返回行?

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:00 25 4
gpt4 key购买 nike

我正在尝试在执行 UPDATE 后返回一组行。

像这样。

UPDATE Notis new_noti SET notis = '{}'::noti_record_type[] 
FROM (SELECT * FROM Notis WHERE user_id = 2 FOR UPDATE) old_noti
WHERE old_noti.user_id = new_noti.user_id RETURNING unnest(old_noti.notis);

但是 postgres 提示,这是正确的:

set-valued function called in context that cannot accept a set

我应该如何着手实现它?

也就是说,在 UPDATE 之后,RETURNING 来自SELECTed 数组的一组行?

我知道一个函数可以使用 RETURNS SETOF 来实现这一点,但如果可能的话我宁愿不要这样做。

最佳答案

使用WITH statement :

WITH upd AS (
UPDATE Notis new_noti SET notis = '{}'::noti_record_type[]
FROM (SELECT * FROM Notis WHERE user_id = 2 FOR UPDATE) old_noti
WHERE old_noti.user_id = new_noti.user_id RETURNING old_noti.notis
)
SELECT unnest(notis) FROM upd;

关于sql - 使用 unnest() 返回行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32273661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com