MySQL更新-使用一个查询将列中的字段设置为1,将所有其他字段设置为0

MySQL更新-使用一个查询将列中的字段设置为1,将所有其他字段设置为0,mysql,sql,sql-update,where-clause,Mysql,Sql,Sql Update,Where Clause,我正在更新mysql列名ND“frontpage”中的一个字段,将其从0设置为1 此查询没有问题: mysql_query("UPDATE table SET frontpage='1' WHERE user_id='999' AND poll_id='555'"); 我想完成的是,如果过去用户id 999已经将其他现有轮询id设置为1,这些行应该自动设置为0 作为MySQL的初学者,我会运行两个查询,第一个是将所有内容设置为frontpage='0'WHERE user_id='999',第

我正在更新mysql列名ND“frontpage”中的一个字段,将其从0设置为1

此查询没有问题:

mysql_query("UPDATE table SET frontpage='1' WHERE user_id='999' AND poll_id='555'");
我想完成的是,如果过去
用户id 999
已经将其他现有
轮询id
设置为
1
,这些行应该自动设置为0

作为MySQL的初学者,我会运行两个查询,第一个是将所有内容设置为
frontpage='0'WHERE user_id='999'
,第二个是设置
frontpage='1'WHERE user_id='999'和poll_id='555'

我现在的问题是,只使用一个查询是否可以做到这一点,以及如何做到这一点


PS:不确定这是否与我的问题有关,我已经阅读了这些答案,但我还没有真正理解其中的逻辑,也许有人可以向mysql初学者解释一下。

我想你需要这个逻辑:

UPDATE table
    SET frontpage = (case when poll_id = '555' then '1' else '0' end)
    WHERE user_id = '999';
注意:如果常数应该是整数,那么去掉单引号。实际上,您可以将查询简化为:

UPDATE table
    SET frontpage = (poll_id = 555)
    WHERE user_id = 999;