次のクエリがあります。
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 句のパラメーターの順序と同じに保ちます。
私はこのSOの質問を見つけました。
問題は、mysql が一連の SHA1 関数を解釈する方法を認識していないことです。それらを文字列として渡すと正しく評価されず、式 (引用符なし) を渡すと次のエラーが発生します。
OperationalError: (1582, "Incorrect parameter count in the call to native function 'FIND_IN_SET'")