Mysql 按所选id更新数据库记录并重置初始记录

Mysql 按所选id更新数据库记录并重置初始记录,mysql,sql,Mysql,Sql,请说明如何将所有记录更新为0,并仅将所选ID设置为1 UPDATE address SET default_addr = 1 WHERE addr_id = 100 AND user = 'peter' 上面的查询会将所选地址更新为1,这很好,但我想通过一个查询将其他地址或旧的所选默认值设置为0 update address set default_address = case when addr_id = 100 and user = 'peter' then 1 else 0 end

请说明如何将所有记录更新为
0
,并仅将所选ID设置为
1

UPDATE address SET default_addr = 1 
WHERE addr_id = 100 AND user = 'peter'

上面的查询会将所选地址更新为1,这很好,但我想通过一个查询将其他地址或旧的所选默认值设置为0

update address set default_address = case when addr_id = 100 and user = 'peter' then 1 else 0 end 


我构建了一个示例模式。这些通常有助于在将来的问题中提供。

使用
case
语句进行条件更新

update address set default_address = case when addr_id = 100 and user = 'peter' then 1 else 0 end 

我构建了一个示例模式。这些通常有助于在您将来的问题中提供。

在MySQL中,您可以执行以下操作:

UPDATE address
    SET default_addr = (addr_id = 100 AND user = 'peter');
(这个缩写使用了MySQL在数字上下文中将布尔值视为数字的事实,“0”表示false,“1”表示true。)

如果您只需要名为Peter的用户的一个默认地址,请使用
where

UPDATE address
    SET default_addr = (addr_id = 100)
    WHERE user = 'peter';
我怀疑这是您真正想要的逻辑。

在MySQL中,您可以执行以下操作:

UPDATE address
    SET default_addr = (addr_id = 100 AND user = 'peter');
(这个缩写使用了MySQL在数字上下文中将布尔值视为数字的事实,“0”表示false,“1”表示true。)

如果您只需要名为Peter的用户的一个默认地址,请使用
where

UPDATE address
    SET default_addr = (addr_id = 100)
    WHERE user = 'peter';

我怀疑这是您真正想要的逻辑。

示例数据和期望的结果会有所帮助。是否只希望在整个表中有一个
default\u addr
设置为“1”?这就是你的问题所暗示的。@GordonLinoff是的,我只想将一个
default\u addr
设置为1,另一个将返回0样本数据,所需结果将有所帮助。是否只希望在整个表中有一个
default\u addr
设置为“1”?这就是你的问题所暗示的。@GordonLinoff是的,我只想将一个
default\u addr
设置为1,另一个将使用booleansmart使用booleansmart返回到0smart