【发布时间】:2017-05-09 06:34:01
【问题描述】:
这是我的查询:
SELECT name, usage_guidance, total_used_num
FROM tags
WHERE
( name LIKE CONCAT('%', ?, '%') OR
usage_guidance LIKE CONCAT(?, '%') ) AND
name NOT IN ($in)
LIMIT 6
现在我想按name 列对结果进行排序。我的意思是我想把匹配的结果因为name LIKE CONCAT('%', ?, '%') 条件放在第一位,然后其他结果应该在它们之后。我该怎么做?
【问题讨论】:
-
order by name LIKE CONCAT('%', ?, '%') desc, name asc -
@juergend 谢谢,你能告诉我你为什么把
name asc写成order by的第二个参数吗? -
不仅按第一个匹配项然后不匹配项进行排序,而且还按名称对这两个组进行排序。因此,所有匹配项都按名称排序,之后也是不匹配项。
-
@juergend 我明白了,太好了.. 看来您对 MySQL 有很多经验.. 我的最后一个请求,您能看看下面由 Gordon 写的答案吗?告诉我他的观点是
where,order by? -
他告诉你将
where子句的条件也放在order by子句中,最后加上desc。基本上和我在评论中说的一样。
标签: mysql sql sql-order-by