Ole*_*sov 1 mysql sql find-in-set
我有以下查询:
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')")
Run Code Online (Sandbox Code Playgroud)
我会保持结果集的顺序与 IN 子句中参数的顺序相同。
我发现了这个问题。
问题是 mysql 不知道如何解释一组 SHA1 函数,如果我将它们作为字符串传递,它们不会被正确计算,如果我传递给它们一个表达式(不带引号),我会收到以下错误:
OperationalError: (1582, "Incorrect parameter count in the call to native function 'FIND_IN_SET'")
Run Code Online (Sandbox Code Playgroud)
我认为你想使用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'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2709 次 |
| 最近记录: |