我正在更新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>
答案 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;