我有一个在搜索函数中使用的 Mysql SELECT 查询,我想检查 ids 数组是否与数据库中的 ID 匹配。
我的客户希望它以特定的方式排序,所以我必须使用 ORDER BY CASE,但我似乎不知道如何将其与 id 数组结合起来。我尝试使用 FIELD 函数,但这似乎无法与 ORDER BY CASE 结合使用。
大家有什么建议吗?
到目前为止我的订单:
ORDER BY
CASE
WHEN FIELD(p.ID, $implodedArray) THEN '0'
WHEN p.post_title LIKE '%$keyword%' THEN '1'
WHEN pm.meta_value LIKE '%$keyword%' THEN '2'
WHEN p.post_content LIKE '%$keyword%' THEN '3' ELSE '4' END,
最佳答案
您可以使用find_in_set()
ORDER BY
CASE
WHEN FIND_IN_SET(p.ID, $implodedArray) THEN 0
WHEN p.post_title LIKE '%$keyword%' THEN 1
WHEN pm.meta_value LIKE '%$keyword%' THEN 2
WHEN p.post_content LIKE '%$keyword%' THEN 3
ELSE 4
END
这是假设你像这样内爆了你的数组
implode(',', $some_array);
原因是因为 find_in_set 使用逗号分隔的字符串,又名.. '1,2,3,4,5'
关于php - MYSql ORDER BY CASE 第一个 CASE 应按 ID 数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33506500/