#sql #oracle #subquery #sql-update
#sql #Oracle #вложенный запрос #sql-обновление
Вопрос:
У меня есть несколько нулевых значений в моей таблице, я должен обновить эти значения из другой таблицы. Я использую следующий запрос, но вложенный запрос возвращает более одного значения.
update student st
set n_id=(select n_id
from class cl
where st.uid=cl.uid
and ( cl.start_date='31-jan-2011' or cl.start_date='28-feb-2011')
and st.n_id is null);
Как я могу обновить свое поле. Помогите мне выяснить. Спасибо.
Комментарии:
1. вам нужно спросить себя, почему вложенный запрос возвращает более 1 значения? если вы пытаетесь присвоить строке определенное значение, вам, очевидно, нужно возвращать только одно (и правильное) значение, поэтому вам нужно посмотреть, что возвращается в данный момент, и исправить ваше предложение where, чтобы ограничить его тем, что вы действительно хотите.
Ответ №1:
вы можете либо поработать над логикой, либо добавить оператор
and rownum = 1
тогда ваш подзапрос всегда будет возвращать только одну строку (первую .. если она существует)
Комментарии:
1. Это правильно. Однако , @Samurai, прежде чем использовать этот подход, тщательно подумайте и убедитесь, что из всех значений, возвращаемых этим подзапросом, вам действительно все равно, какое из них используется. Если вам не все равно, вам нужно выяснить, какое значение является «правильным», и изменить свой подзапрос, чтобы возвращать только это.