Проблема с запросом ОБНОВЛЕНИЯ

#sqlite

#sqlite

Вопрос:

Я переношу свой код, который использовал MS Access, на Sqlite. Я получаю проблему с запросом на ОБНОВЛЕНИЕ,

 UPDATE Table1 T1, Table2 T2
SET T1.USE_MHE = T2.USE_MHE
WHERE T1.EQ_NAME= T2.EQ_NAME 
  

Приведенный выше запрос отлично работает для подключения к MS Access ADO. Но для SQLite похоже, что использование ярлыка таблицы невозможно (Table1 T1), у меня есть 100 таких запросов для обновления.
Пожалуйста, дайте мне знать, как можно использовать ярлык таблицы в запросе на обновление SQLite.

 5:SqliteError 
near "T1" Syntax error
  

Комментарии:

1. Почему у вас есть оба Table1 и Table2 в первой строке вашего update заявления? Вы просто обновляете Table1 , верно?

2. @Jack: San хочет обновить, Table1 основываясь на значениях в Table2 ; некоторые базы данных используют этот синтаксис, некоторые требуют FROM предложения в UPDATE , а некоторые вообще не разрешают это.

Ответ №1:

Документы ПО ОБНОВЛЕНИЮ предполагают, что это просто невозможно. Возможно, вы смогли бы что-то взломать с помощью виртуальных или временных таблиц, но я думаю, что это будет намного сложнее, чем просто использовать полные имена таблиц.

Помимо этого, вы могли бы просто использовать любой псевдоним и инструмент замены вашего редактора.

Ответ №2:

попробуйте это:

 UPDATE Table1
SET USE_MHE = (SELECT USE_MHE FROM Table2 WHERE Table1.EQ_NAME = Table2.EQ_NAME)
  

Ответ №3:

 update table1 
set use_mhe=( select use_mhe 
              from table2 
              where eq_name=table1.eq_name )
where use_mhe= ( select use_mhe 
        from table2 
        where eq_name=table1.eq_name )
  

не является нулевым;

Комментарии:

1. да, это один из вариантов, но у меня есть 100 таких запросов. И некоторые из них очень сложны, чем это. Итак, я ищу альтернативу использованию здесь ярлыков таблиц.

2. SQLite не поддерживает ярлыки таблиц. Смотрите sqlite.org/lang_update.html