Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Не удается выполнить апдейт


Автор: Moid 17.10.2011, 19:30
Код

UPDATE Words
SET Words.[Count] = Words.[Count] + 
    (select C.[Count] from (select A.[Count], B.SourceWord 
        From
        (select * from Words 
            where SourceWord Like'%s') A,

        (select SourceWord, [Count] from Words 
            where SourceWord not Like'%s') B

    where substring(A.SourceWord, 1, len(A.SourceWord) -1) = B.SourceWord)C
where Words.SourceWord = C.SourceWord ) 


Код

There was an error parsing the query. [ Token line number = 3,Token line offset = 3,Token in error = select ]


По синтаксису вроде все верно:
http://msdn.microsoft.com/ru-ru/library/ms174122(v=sql.100).aspx

Автор: Zloxa 17.10.2011, 21:46
Вроде как текст как будто бы синтаксическая ошибка.
Но на деле, думаю, вам просто скалярный подзапрос возвращает более одной записи.

Добавлено через 47 секунд
Попробуйте посмотреть план запроса. Если план покажет, значит синтаксис действительно верен.

Автор: Akina 17.10.2011, 22:13
Moid, многотабличные запросы на обновление имеют совершенно иной синтаксис. Курите маны.

Автор: Moid 18.10.2011, 07:22
Странно, что внутренний селект отрабатывает и если вместо апдейта написать инсерт, тоже все ок

Автор: Zloxa 18.10.2011, 08:46
Moid, ваши странности нам отсюда не видны.

Автор: freehoster 5.11.2011, 20:54
по коду вроде все норм, могу посоветовать создать на время пустую табличку, туда собирать данные которые нужно апдейтить и с нее переносить, да это увеличит время обработки, но возможно вы сразу найдете свой косяк еще на стадии заполнения таблички (собственный опыт)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)