根据匹配的条件对SQL记录进行排序

时间:2010-09-16 19:32:34

标签: sql mysql

我有这个问题:

SELECT * FROM table WHERE key LIKE '1,2,3,%' OR key LIKE '1,2,%' OR key LIKE '1,%'

是否可以根据首先匹配的条件对从此查询返回的记录进行排序。我希望首先获得与key LIKE '1,2,3,%'匹配的所有记录,然后是key LIKE '1,2,%'以及之后的其他记录。

例如,如果我有这些记录:

key: "1,2,3,4"
key: "1,2,5"
key: "1,4"
key: "1,2,5,6"
key: "1,3"
key: "1,2,3,4,7"
key: "1,2,4"

我希望他们这样排序:

key: "1,2,3,4"
key: "1,2,3,4,7"
key: "1,2,4"
key: "1,2,5"
key: "1,2,5,6"
key: "1,3"
key: "1,4"

有可能吗?

3 个答案:

答案 0 :(得分:3)

使用MATCH ... AGAINST并按排名排序。它完全符合您的要求。

答案 1 :(得分:2)

.... ORDER BY CASE
WHEN key LIKE '1,2,3,%' THEN 1
WHEN key LIKE '1,2,%' THEN 2
ELSE 3
END

答案 2 :(得分:1)

使用“UNION”可以完成这项工作吗?

SELECT * FROM table WHERE key LIKE'1,2,3,%' 联盟 SELECT * FROM表WHERE键LIKE'1,2,%' 联盟 SELECT * FROM表WHERE键LIKE键LIKE'1,%'