Обновление столбца SQLite с использованием значения из другой таблицы не работает (но хорошо работает в PostgreSQL) - PullRequest
0 голосов
/ 27 апреля 2020

Используя SQLite, мне нужно обновить столбец таблицы1, используя значение из таблицы2. Перед выполнением оператора update я извлек значение из таблицы 2, используя запрос ниже, и он работал без проблем

SELECT *,CAST(table2.val AS integer)
FROM table2, table1
WHERE table1.a = table2.x AND table1.b = table2.y;

Выше запрос даст мне извлеченный целочисленный тип table2.val с правильным номером строки. Но когда я хочу обновить определенный столбец таблицы 1, используя извлеченное значение из запроса выше, это не даст мне результат, и запрос продолжит выполняться (бесконечно).

UPDATE table1
SET newval= (
SELECT CAST(table2.val AS integer)
FROM table2
WHERE table1.a = table2.x AND table1.b = table2.y;
)

Что-то не так с моим запросом? Обе мои таблицы не имеют первичного ключа, я не уверен, имеет ли он какое-либо отношение к нему.

Я пробовал тот же процесс в PostgreSQL, используя запрос ниже, и он работал хорошо.

UPDATE table1
SET newval= CAST(table2.val AS integer)
FROM table2
WHERE table1.a = table2.x AND table1.b = table2.y;

Я не знаю, почему мой SQLite-запрос не работает.

...