I have this query:
SELECT * FROM table WHERE key LIKE '1,2,3,%' OR key LIKE '1,2,%' OR key LIKE '1,%'
Is it posible to sort records returned from this query based on which conditions was matched first. I'd like to get all records that match key LIKE '1,2,3,%'
first, then key LIKE '1,2,%'
and the others after.
For example, if I have these records:
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"
I would like them to be sorted like so:
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"
Is it possible to do?
Use MATCH ... AGAINST
and order by rank. It exactly does what you want.
.... ORDER BY CASE
WHEN key LIKE '1,2,3,%' THEN 1
WHEN key LIKE '1,2,%' THEN 2
ELSE 3
END
Does using "UNION" could do the job?
SELECT * FROM table WHERE key LIKE '1,2,3,%' UNION SELECT * FROM table WHERE key LIKE '1,2,%' UNION SELECT * FROM table WHERE key LIKE key LIKE '1,%'
精彩评论