Ошибка при обновлении таблицы в Sybase - PullRequest
0 голосов
/ 19 августа 2010

Я выполняю инструкцию UPDATE для таблицы Sybase, но получаю следующую ошибку:

Сообщение 325, уровень 18, состояние 4: сервер 'dev', строка 1: поиск Adaptive Serverнет юридического плана запроса для этого заявления.Если абстрактный план форсирует план запроса, проверьте его соответствие запросу.Если нет, обратитесь в службу технической поддержки Sybase.

Вот мое заявление об обновлении.

 Update TABLE1 SET SAMPLECOL = (
   Select
   TABLE2.SAMPLECOL
   from TABLE2
   where
   TABLE2.COMMON_ID = TABLE1.COMMON_ID
 )
 where
 TABLE1.TABLE1_ID in (
   Select
   TABLE1.TABLE1_ID
   from TABLE1
   inner join TABLE2
   on TABLE1.COMMON_ID = TABLE2.COMMON_ID
   where TABLE1.SAMPLECOL = ''
 )

Любые идеи будут с благодарностью.

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Я думаю, проблема в том, что вы устанавливаете столбец SAMPLECOL с чем-то, что может возвращать несколько значений.Попробуйте сделать это и опубликуйте результат здесь:

Update TABLE1 SET SAMPLECOL = (
   set rowcount 1
   Select 
   TABLE2.SAMPLECOL
   from TABLE2
   where
   TABLE2.COMMON_ID = TABLE1.COMMON_ID
   set rowcount 0
 )

(при этом будет выбрана только одна запись строки, и ваша логика может не сработать на этом основании, однако, насколько я понимаю, вы получаете ошибкусвязано с этим).Снова попробуйте и сообщите нам результат.

0 голосов
/ 27 августа 2010

попробуйте вместо;

update TABLE1
   set SAMPLECOL = T2.SAMPLECOL
  from TABLE1 T1, TABLE2 T2
 where T1.COMMON = T2.COMMON
   and isnull(T1.SAMPLECOL, '') = ''
...