我有一个在搜索功能中使用的Mysql SELECT查询,我想检查一组id,如果它们与db中的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,
答案 0 :(得分:2)
您可以使用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使用逗号分隔的字符串aka .. '1,2,3,4,5'