PostgreSQL:使用单个查询更新表中的多行

3
假设我有一个名为Car的表格,它有以下列:id(uuid)、status(文本)、color(文本)。
我已经将所有特定颜色的Car id推入了一个数组中:
假设我有一个Car id的数组(数组大小可以改变):
let car_ids_arr = ['id1', 'id2', ...'idn']

现在我需要更新所有在Car中id匹配arr中ids的行(例如,将status设置为false)。我不想用for循环进行操作并进行多次数据库调用,我更愿意一次性完成所有操作。我的id数组大小可能会改变,所以我不确定该如何处理... 有什么建议吗?
1个回答

4

使用数组运算符any()即可轻松完成:

update car
set status = false
where id = any(array[1, 2, 3])

如果id实际上是uuid数据类型:
update car
set status = false
where id = any(array[...]::uuid[])

当执行这个查询时,我遇到了一个错误: 提示:没有匹配给定名称和参数类型的操作符。您可能需要添加显式类型转换。``` - kris
@kris:你没有提到我们正在处理uuid。然后按照错误提示进行类型转换。请查看我的更新答案。 - GMB
还有,如果我想在查询中使用我的数组变量car_ids_arr而不是array[...]怎么办? - kris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接