2016-11-24 2 views
0

Я переписал полный вопрос, потому что в первый раз я не был достаточно ясным.Поля обновления Mysql, только если оба поля равны нулю сразу

Я пытаюсь обновить данную строку идентификатор в таблице пользователей и заполнить только те значения, которые являются пустыми, как это:

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 Я хочу, чтобы другие поля по-прежнему вызывают и обновлять по отдельности, независимо от gender и full_name значений

+0

Sidenote: Вы цитируете эти переменные, где они стоят, являются строками, правильно? Вы также помечены как php, но на самом деле нет никакого кода для поддержки вопроса, кроме переменных. –

+0

Да, только переменные пришли из PHP – adrianTNT

ответ

0

if в update заявления в 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

, вы забыли «пол 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 

Тем не менее, кажется, больше смысла обновлять записи, если либо пол или полное имя be 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 gender и full_name IS NULL' в конце, потому что у меня уже есть' WHERE id = 123', а также потому, что обновляются другие поля индивидуально в других условиях (если они равны нулю). – adrianTNT

+0

Почему в термине 'WHERE' уже есть термин, исключающий добавление дополнительных терминов? В любом случае, два варианта, которые я вам дал, - это то, как я это сделаю. –

+0

будет ли порядок, подобный этому, действительным (это местоположение нулевого пол и полное_имя)? 'UPDATE users SET address = 'Back Stteet', (gender = 'm', full_name = 'foo' WHERE gender = null AND full_name = null), job = 'mechanic' WHERE id = 123' – adrianTNT

Смежные вопросы