MYSql ORDER BY CASE 第一种情况应按 ID 数组排序

MYSql ORDER BY CASE 1st CASE should order by array of IDs

我有一个用于搜索功能的 Mysql SELECT 查询,我想检查一个 ID 数组是否与数据库中的 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'