2016-11-24 59 views
0

我重寫了完整的問題,因爲我第一次不夠清楚。只有同時存在兩個字段爲空的Mysql更新字段

我試圖更新用戶表中給定的行ID和只填寫爲空值,如:

UPDATE USERS SET 
address='Main Street' IF current address IS NULL 
gender='M' AND full_name='JOHN SMITH' IF both gender and full_name ARE NULL 
job='Mechanic' IF current job is NULL 
WHERE id=123 

我不知道如何與updateing性別和FULL_NAME做部分,我想等領域依舊會觸發並更新單獨不管genderfull_name

+0

旁註:您正在引用那些變量,它們代表的字符串是正確的嗎?你也標記爲PHP,但實際上沒有任何代碼來支持這個問題,除了變量。 –

+0

是的,只是變量來自PHP – adrianTNT

回答

0

ifupdate聲明SQL進入查詢的WHERE部分:

UPDATE table_name SET gender = $gender WHERE gender IS NULL AND full_name IS NULL 

我想補充也AND id = $id_you_want_to_update

+0

你忘了'gender is NULL and full_name IS NULL'這是個問題。只有兩者都爲空時才更新。 –

3

這可能是一個逐字回答你的問題:

UPDATE yourTable 
SET gender = $gender, 
    full_name = $full_name 
WHERE gender IS NULL AND full_name IS NULL 

然而,似乎更有意義,更新,如果記錄性別或全名NULL。在這種情況下,您可以嘗試:

UPDATE yourTable 
SET gender = COALESCE(gender, $gender), 
    full_name = COALESCE(full_name, $full_name) 
WHERE gender IS NULL OR full_name IS NULL 
+0

對不起,我的問題還不夠清楚,現在我試圖添加更多細節,因爲我已經擁有'WHERE id = 123',並且還因爲其他字段已更新,所以我不能在末尾使用'WHERE gender和full_name IS NULL'單獨在其他條件下(如果它們爲空)。 – adrianTNT

+0

爲什麼在'WHERE'子句中有一個術語會排除添加更多術語?無論如何,我給你的兩個選擇是我如何做到這一點。 –

+0

這樣的命令是否有效(null gender和full_name的位置)? '更新用戶SET地址='返回Stteet',(gender ='m',full_name ='foo'WHERE gender = null AND full_name = null),job ='mechanic'WHERE id = 123' – adrianTNT

相關問題