猿问

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

我正在尝试编写一个 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

      `


杨魅力
浏览 96回答 1
1回答

米脂

你可以使用这样的东西来接近它: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]
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答