我在搜索中进行了多项选择,收集了我所有的look_up_to_cat_id,每个都按与此订单子句的相关性排序。
WHEN '.$searchProperties['col'].' LIKE \''.$term.'\' THEN '.$c_0++.'
WHEN '.$searchProperties['col'].' LIKE \''.$term.'%\' THEN '.$c_20++.'
WHEN '.$searchProperties['col'].' LIKE \'%'.$term.'%\' THEN '.$c_40++;
我的问题是,当我开始合并所有结果时,我的排序变得一团糟。我希望能够在我的查询中添加一列,该列将具有上述数字之一 $c_0 或 $c_20 或 $c40 取决于哪个顺序子句适用于结果,以便我可以将所有记录集组合成一个数组和使用这些数字在数组中正确排序它们
这是我给你一个想法的实际 SQL 语句之一。
SELECT `catelogue`.*,`release_date`.`RELEASE_DATE` FROM catelogue
LEFT JOIN `release_date` ON `catelogue`.`RELEASEDATE_ID` = `release_date`.`ID`
WHERE TITLE LIKE '%barbie%'
GROUP BY ID
ORDER BY
(CASE WHEN TITLE LIKE 'barbie' THEN 0
WHEN TITLE LIKE 'barbie%' THEN 200
WHEN TITLE LIKE '%barbie%' THEN 400
ELSE 600 END ),
( CASE WHEN TITLE LIKE 'barbie' THEN RELEASE_DATE
WHEN TITLE LIKE 'barbie%' THEN RELEASE_DATE
WHEN TITLE LIKE '%barbie%' THEN RELEASE_DATE END) desc,TITLE
所以基本上所有匹配 'barbie' 的东西都会在 temp col 中有 0 然后匹配 'barbie%' 的所有东西都会有 200 等等
我希望我已经足够清楚了