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[])
假设我有一个 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[])