原始查询看起来像这样(MySQL):
SELECT * FROM books WHERE title LIKE "%text%" OR description LIKE "%text%" ORDER BY date
是否可以重写它(没有工会或程序),因此结果将如下所示:
标题匹配按日期排序的查询的书籍列表,后跟:
描述符合按日期排序的查询的书籍列表
所以基本上只是给匹配标题而不是描述赋予更高的优先级.
在sql server中我会做以下事情:
select * from books where title like '%text%' or description like '%text%' order by case when title like '%text%' then 1 else 2 end, date
我不确定你是否可以在mysql中的ORDER BY中包含不在SELECT中的列,但这是我使用的原则.否则,只需在SELECT中包含派生列.