Синтаксическая ошибка SQLite для работающего SQL на Oracle - PullRequest
1 голос
/ 14 декабря 2011

Я перемещаю приложение из Oracle в SQLite, поскольку мне не нужно постоянное хранилище. Ц / Б используется только для сортировки большого количества записей.

Однако следующий SQL, который работает в Oracle, не работает на SQLite с синтаксической ошибкой.

Может ли кто-нибудь указать мне, в чем ошибка?

       UPDATE atobas_files files
       SET (dlself_packs,dlself_recs,dl_packs,dl_recs,c4sm_packs,c4sm_recs,c4med_packs,c4med_recs,c4lg_packs,c4lg_recs) = (
           SELECT COALESCE( SUM(statestats.dlself_packs), 0 ),
                  COALESCE( SUM(statestats.dlself_recs),0 ),
                  COALESCE( SUM(statestats.dl_packs), 0 ),
                  COALESCE( SUM(statestats.dl_recs), 0 ),
                  COALESCE( SUM(statestats.c4sm_packs), 0 ),
                  COALESCE( SUM(statestats.c4sm_recs), 0 ),
                  COALESCE( SUM(statestats.c4med_packs), 0 ),
                  COALESCE( SUM(statestats.c4med_recs), 0 ),
                  COALESCE( SUM(statestats.c4lg_packs), 0 ),
                  COALESCE( SUM(statestats.c4lg_recs), 0 )
            FROM
                atobas_statestats statestats
                INNER JOIN atobas_files f2 ON statestats.fileid = f2.id
            WHERE f2.id = files.id
       )
       WHERE files.runid = 10;

Спасибо!

1 Ответ

1 голос
/ 14 декабря 2011

Тип обновления, которое использует показанный оператор (UPDATE table SET (col1, col1, ..., coln) SELECT ...), поддерживается не всеми СУБД; только стандартный (UPDATE table SET col1=value1...) поддерживается в SQLite ; но есть помощь, вы также можете обновить одну таблицу на основе данных из другой таблицы в SQLite .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...