为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以从 return 子句中的 Postgresql 插入语句返回 id 数组?

是否可以从 return 子句中的 Postgresql 插入语句返回 id 数组?

杨魅力 2022-09-02 16:55:23
我正在尝试编写一个 delete 语句,并且 return 子句将 id 作为对象数组返回,如下所示:[{simcard_id: 1},{simcard_id: 2},{simcard_id: 3},]但我希望它返回一个数字数组:[1, 2, 3]有没有办法让语句返回一个只有数字的数组?我尝试了一些聚合函数,但我不断收到错误,说我无法在返回语句中执行array_agg函数。我也尝试这样做:RETURNING ARRAY[simcard_id]但后来它变得很奇怪。我不是sql的最佳人选,所以任何帮助将不胜感激。我知道我可以映射值并返回一个数字数组,但我想借此机会了解我是否可以使用sql来做到这一点。下面是 sql 查询。它使用 nodejs 的 postgres 库。      const simcardsIds = await sql`      DELETE FROM simcards      WHERE simcard_id = ANY(${sql.array(simcards)})      RETURNING simcard_id      `
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

你可以使用这样的东西来接近它:


with x as (

   delete from simcards

   where simcard_id in (1,2)

   returning simcard_id

)

select array_agg(simcard_id) as y from x;

这将为您提供如下输出:


 y

-----------

 {1,2}

你可以走得更远一点,就像这样:


with x as (

    delete from simcards

    where simcard_id in (1,2)

    returning simcard_id

),

main as (select array_agg(simcard_id) as y from x)

select replace(  replace(y::text, '{', '['),   '}', ']') as out from main;

这将为您提供:


  out  

-------

 [1,2]


查看完整回答
反对 回复 2022-09-02
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号