MySQL UPDATE - 列中的SET字段为1,所有其他字段为0,只有一个查询

时间:2014-08-12 23:08:17

标签: mysql sql sql-update where-clause

我正在更新mysql列namend“frontpage”中的字段,将其设置为0到1。

此查询没问题:

mysql_query("UPDATE table SET frontpage='1' WHERE user_id='999' AND poll_id='555'");

我想要完成的是,如果user_id 999过去已将其他现有poll_id设置为1,则这些行应自动设置为0。

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

我现在的问题是,这可以通过只使用一个查询来完成吗?

PS:不确定它是否与我的问题有关,我已经阅读了这些答案MySQL: Updating all rows setting a field to 0, but setting one row's field to 1但是我还没有真正理解逻辑,也许有人可以向mysql初学者解释它。< / p>

1 个答案:

答案 0 :(得分:2)

我想你想要这个逻辑:

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;