[英]MySQL UPDATE - SET field in column to 1, all other fields to 0, with one query
我正在更新mysql列名為“ 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'
設置frontpage='1' WHERE user_id='999' AND poll_id='555'
。
我現在的問題是,可以僅使用一個查詢來完成此操作嗎?
PS:不確定是否與我的問題有關,我已經閱讀了以下答案MySQL:更新所有行,將一個字段設置為0,但將一行的字段設置為1,但我並沒有真正理解邏輯,也許有人可以向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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.