SQL多排序场景下ORDER BY DESC失效,pubdate排序异常求助
解决SQL查询排序问题
问题根源
你的SQL语句错误在于ORDER BY子句的逻辑:把匹配条件和排序字段混在一起,导致排序逻辑完全偏离预期;同时WHERE和ORDER里的匹配条件不统一,也会引发执行错误。
正确方案(基于你原本可用的LIKE匹配)
保留你能正确匹配数据的title LIKE ? AND description LIKE ?条件,直接在ORDER BY中指定按pubdate降序排序即可:
SELECT source, title, description, link, pubdate FROM feeds WHERE title LIKE ? AND description LIKE ? ORDER BY pubdate DESC LIMIT 60
因为pubdate是数字类型的时间戳,DESC会让数值更大的(更新的时间)排在最前面,正好满足你“新、新、旧、旧、旧”的排序需求。
如果你想结合全文搜索(MATCH AGAINST)
如果你的初衷是使用全文搜索而非LIKE,那需要统一匹配逻辑,同时可以按相关性+时间排序:
SELECT source, title, description, link, pubdate, MATCH(title, description) AGAINST(? IN BOOLEAN MODE) AS relevance FROM feeds WHERE MATCH(title, description) AGAINST(? IN BOOLEAN MODE) ORDER BY relevance DESC, pubdate DESC LIMIT 60
这个语句会先按全文搜索的匹配度排序,匹配度相同的内容再按时间从新到旧排列。
内容的提问来源于stack exchange,提问作者namename
相关产品推荐
相关产品推荐

