2014-12-04 2 views
0

Не знаю, почему это не работает, но здесь вы идете.обновление двух или более значений в столбце в sql

update delievery 
set status = 'delivered' 
where order_num = 'a563' 
and order_num = 'a109'; 

Если бы я должен был запустить это, я бы обновил 0 строк.

, конечно, я мог бы сделать это индивидуально, но если мне нужно было обновить более двух вещей, это было бы не очень эффективно.

+0

Здесь вы должны принять ответ, если любой из них решил вашу проблему :) – gprathour

ответ

1

Вы написали ваш запрос, используя AND это просто означает, что оба условия, написанные с ним , должны соответствовать. Условие здесь order_num = 'a563' и order_num = 'a109'. Теперь, если вы посмотрите на свою таблицу, вы не увидите ни одной строки в своей таблице, где столбец order_num будет иметь значения a563 и a109.

В одно время будет только одно значение. Таким образом, оба условия никогда не удовлетворяются в то же время, поэтому ни одна строка не обновляется.

В вашем запросе вы должны использовать OR вместо AND. Поскольку он проверяет, является ли какое-либо из условий истинным, обновите значения. Таким образом, в одной строке значение столбца order_num будет a563, а в другом - a109, поэтому оба будут обновлены.

+0

Спасибо, большое объяснение, извините, если кто-то воспринимает это как немой вопрос – dragonore

+0

@dragonore Добро пожаловать! и не нужно жалеть! Мы здесь, чтобы учиться. :) – gprathour

3

Вам необходимо использовать OR. AND требует выполнения обоих условий.

update delievery 
set status = 'delivered' 
where order_num = 'a563' 
or order_num = 'a109'; 

Вы также можете использовать IN так:

update delievery 
set status = 'delivered' 
where order_num IN ('a563', 'a109'); 
+0

Спасибо. Я думал, что, поскольку они оба должны были быть изменены, «и» потребовалось. Спасибо за разъяснения. – dragonore

0

Вы должны использовать 'ИЛИ'

update delievery set status = 'delivered' 
where order_num = 'a563' or order_num = 'a109'; 

....

order_num || Status 
--------------------- 
a563   pending 

a564   deliverd 

a109   pending 

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