簡體   English   中英

MySQL UPDATE-將列中的SET字段設置為1,將所有其他字段設置為0,並執行一次查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM