MySQL 如何更新具有相同条件的多行 table
MySQL how to Update multiple rows with conditions in the same table
我有一个问题,我想根据条件更新 table 中的值。
我有一个用户列表,我需要更新他们的 accounting_id
,关键是 user_id
。
我想在一个查询中完成。
问题是查询将 0 放入 accounting id
。数据库是 MySQL.
UPDATE users
SET users.accounting_id = CASE
WHEN users.user_id = '102215' THEN users.accounting_id = '102'
WHEN users.user_id = '102144' THEN users.accounting_id = '193'
END
WHERE users.user_id IN ('102215','102144');
让我们检查一下您语句中 then
部分的表达式。例如:users.accounting_id = '102'
。这是 不是 赋值,而是一个布尔表达式,计算结果为 false,因为 accounting_id
不是 102(在本例中是 102215)。
case
之前的 =
用于赋值。在 then
分支中,您只需要 return 要分配的 值 :
UPDATE users
SET users.accounting_id = CASE
WHEN users.user_id = '102215' THEN '102'
WHEN users.user_id = '102144' THEN '193'
END
WHERE users.user_id IN ('102215','102144');
我有一个问题,我想根据条件更新 table 中的值。
我有一个用户列表,我需要更新他们的 accounting_id
,关键是 user_id
。
我想在一个查询中完成。
问题是查询将 0 放入 accounting id
。数据库是 MySQL.
UPDATE users
SET users.accounting_id = CASE
WHEN users.user_id = '102215' THEN users.accounting_id = '102'
WHEN users.user_id = '102144' THEN users.accounting_id = '193'
END
WHERE users.user_id IN ('102215','102144');
让我们检查一下您语句中 then
部分的表达式。例如:users.accounting_id = '102'
。这是 不是 赋值,而是一个布尔表达式,计算结果为 false,因为 accounting_id
不是 102(在本例中是 102215)。
case
之前的 =
用于赋值。在 then
分支中,您只需要 return 要分配的 值 :
UPDATE users
SET users.accounting_id = CASE
WHEN users.user_id = '102215' THEN '102'
WHEN users.user_id = '102144' THEN '193'
END
WHERE users.user_id IN ('102215','102144');