#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