Использовать FIND_IN_SET мою функцию sql с хэшированными значениями
У меня есть следующий запрос:
SELECT url, url_hash from pages WHERE url_hash IN (SHA1('URL1'), SHA1('URL2'), SHA1('URL3'))
ORDER BY FIND_IN_SET(url_hash, "SHA1('URL1'), SHA1('URL2'), SHA1('URL3')")
Я бы хотел сохранить порядок набора результатов таким же, как порядок параметров в предложении IN.
Я нашел этот ТАК вопрос.
Проблема в том, что mysql не знает, как интерпретировать набор функций SHA1, если я передаю их как строки, они не оцениваются правильно, и если я передаю им выражение (без кавычек), я получаю следующую ошибку:
OperationalError: (1582, "Incorrect parameter count in the call to native function 'FIND_IN_SET'")
1 ответ
Решение
Я думаю, что вы хотите использовать field()
скорее, чем find_in_set()
:
SELECT url, url_hash
from pages
WHERE url_hash IN (SHA1('URL1'), SHA1('URL2'), SHA1('URL3'))
ORDER BY field(url_hash, SHA1('URL1'), SHA1('URL2'), SHA1('URL3'));