我有一个在搜索函数中使用的MysqlSELECT查询,我想检查ID数组是否与数据库中的ID匹配。
我的客户希望它以特定的方式排序,所以我必须使用ORDER BY CASE,但我似乎不知道如何将其与id数组相结合。我尝试过使用FIELD函数,但这似乎无法与ORDERBYCASE结合使用。
有人有什么建议吗?
到目前为止我的订单:
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_inset使用了逗号分隔的字符串,也就是。。'1,2,3,4,5'