Пусть следующие таблицыОбновление таблицы с максимальным результатом функции из другой таблицы
source(
id INT,
name VARCAHR
)
dest(
id INT,
name VARCAHR
)
Где source
таблица заполнена как id
и name
; и dest
заполнен только name
, имеющий id
набора для null
Необходимо обновить dest
таблицы и установить id
который является id
из наиболее близки name
(рассчитываются путем Левенштейн расстояния) от source
стола
Для лучшего понимая, что это так, как я планировал это идеально (запрос имеет синтаксическую ошибку):
UPDATE dest
SET dest.id = (
SELECT source.id, levenstein_ratio(dest.name, source.name) as similarity
FROM source
GROUP BY similarity HAVING similarity > 50
ORDER BY similarity DESC
LIMIT 1
).id
Я не мог сделать никакой причины le запрос без повторяющейся функции.
Есть ли способ сделать это? Эффективность не имеет решающего значения, но несколько разумное решение будет оценено
Я понимаю, но это требует повторяющегося вызовите ту же функцию. Я бы хотел избежать этого – Eugene
Если вам нужен рабочий запрос ... я не знаю другого способа ... потому что (я повторяю) у вас должен быть единственный результат в выборе для присвоения этому заданному полю. ..... это означает, что вы не можете определить сходство с псевдонимами, а затем, если вы не можете использовать псевдоним. уникальный способ - повторить исходный код. – scaisEdge