У меня есть две таблицы TABLE-2 и TABLE_3
Preferred_Name|name_TABLE_3
---------------------------
Pref_Name1 |
Pref_Name2 |
Pref_Name3 |
...etc
name
-----
name1
name2
name3
...etc
Я пытаюсь использовать MATCH (имя) AGAINST ('Preferred_Name') для обновления таблицы TABLE-2 с именем наилучшего совпадения из TABLE_3, например:
SELECT name
, MATCH (name
) ПРОТИВ ('Preferred_Name') как релевантность ОТ TABLE_3
ГДЕ МАТЧ (name
) ПРОТИВ ('Preferred_Name'), имеющий релевантность = max (MATCH (name
) AGAINST ('Preferred_Name'))
Но так как AGAINST не принимает переменные, я попытался сделать это через хранимую функцию. Я пытаюсь написать хранимую функцию в phpmyadmin для использования в операторе UPDATE SET:
UPDATE `TABLE-2` SET `TABLE-2`.`name_TABLE_3` = best_fulltext_match(`TABLE-2`.`Preferred_Name`);
внутренний код:
SELECT name
, MATCH (name
) ПРОТИВ ('Preferred_Name') в качестве релевантности FROM TABLE_3
WHERE MATCH (name
) AGAINST ('Preferred_Name'), имеющей отношение= max (MATCH (name
) AGAINST ('Preferred_Name')))
работает нормально и отображает правильный запрос при нажатии одной клавишиd используется одновременно, но когда я выполняю функцию, я не получаю результата.Цени любую помощь.
CREATE DEFINER=`root`@`localhost` FUNCTION `best_fulltext_match`(`search_string` TEXT) RETURNS varchar(600) CHARSET latin1
DETERMINISTIC
BEGIN
RETURN (SELECT `name`, MATCH (`name`) AGAINST ('search_string') as relevance FROM `TABLE_3` WHERE MATCH (`name`) AGAINST ('search_string') having relevance=max(MATCH (`name`) AGAINST ('search_string')));
END