2014-11-20 2 views
0

У меня есть что-то вроде этого:Inner присоединиться к заявлению обновления бросали ошибки

UPDATE table set new_id=(SELECT distinct t2.new_id 
FROM table t1 
inner join (SELECT hn.id,max(hn.id) OVER (PARTITION BY first_name,MIDDLE_NAME,last_name) AS new_id 
from table)t2 
on t1.id=t2.id); 

этот запрос бросает мне ошибку о том, что один ряд суб-запрос возвращает более одной строки.

Пожалуйста, помогите мне с синтаксисом на том, как обновить new_id значения

+0

Даже после использования отдельного ключевого слова это бросает мне ту же ошибку. – user2762770

+0

Ваш запрос фиктивный. Oracle («plsql») не позволяет «присоединяться к обновлениям». MySQL не поддерживает функции окна. Я бы предложил вам удалить этот вопрос и задать другой вопрос с образцами данных и то, что вы хотите выполнить. Отметьте его правильно и включите попытку SQL. –

ответ

0

ошибка говорит вам точно проблема: «суб-запрос возвращает более одной строки»:

UPDATE table set new_id=(SELECT distinct t2.ne 
         ^--- 

подзапрос может/будет возвращать несколько строк, а так как вы используете его в контексте равенства (=), то есть не проделано. Если возвращено несколько разных значений/строк, вы должны либо сделать запрос действительно возвращать только одно значение row/one, либо переключиться на запрос IN. Опция IN невозможна, потому что вы используете несколько значений в своем UPDATE, поэтому ваш подзапрос в одной строке является вашим единственным вариантом.

+1

. , С этим запросом так много проблем, что не стоит пытаться ответить. –

+0

Спасибо Marc.I не уверен, как ограничить запрос одной строкой? Должен ли я использовать соединения? – user2762770

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