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

PostgreSQL: Update multiple rows in table with a single query

假设我有一个 table Car。此 table 包含以下列:id(uuid)、status(text)、color(text)。

我已将具有特定颜色的所有 Car 个 ID 推送到一个数组中:

假设我有一个 Car 个 ID 的数组(数组的大小可以改变):

let car_ids_arr = ['id1', 'id2', ...'idn']

现在我需要更新 Car 中 ID 与 arr 中的 ID 匹配的所有行(例如,将 status 设置为 false)。我不想在 for 循环中执行此操作并多次调用数据库,我宁愿在一次调用中完成所有操作。

我的 ID 数组的大小可以改变,所以我不确定如何处理这个...有任何指示吗?

这很容易用数组运算符 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[])