Mysql

當另一列發生更改時更新有效列

  • June 5, 2016

我們有一valid_phone列只儲存 1 或 0 表示有效或無效。

當使用者更改他們的電話號碼時,我們希望該欄位返回 0,以便他們必須再次驗證他們的號碼。如果它沒有改變,我們希望尊重那裡的任何值,所以不要總是假設如果它沒有改變,將其設置為 1,因為他們可能還沒有驗證他們的手機,所以在這種情況下它應該保持在 0。

我看到一個使用 a 的查詢,CASE並認為它可能對我們有用,但到目前為止我還沒有讓它工作。

UPDATE text2bid_users SET valid_phone = CASE
   WHEN phone NOT '0000' THEN '0'
END WHERE user_id = '1234'

我確定我的語法可能是錯誤的,或者我什至可能在錯誤的地方尋找解決方案,因為我是一個剛開始涉足後端和數據庫的前端人員。

我對此的想法是查看是否phone已經設置為我將要更新它的手機(這樣就不會被硬編碼),如果不一樣,則設置valid_phone為 0 然後在此之外nameemailaddress也將更新。

我如何得到一個查詢來做我們需要它在這裡做的事情?

我也可能會更新其他值,所以如果電話相同,我不希望它不更新其他欄位。我想我可以執行兩個查詢,但我覺得我應該能夠在一個查詢中完成。我可能錯了。

UPDATE text2bid_users
SET valid_phone = CASE WHEN phone != '0000' THEN 0 else valid_phone END,
phone = '0000'
WHERE user_id = 1;

http://sqlfiddle.com/#!9/24784/1

引用自:https://dba.stackexchange.com/questions/138042