我有这个MySQL查询:
SELECT
id,
title
FROM song
WHERE text IS NOT NULL
AND title LIKE "%foo%"
ORDER BY title
有什么好方法可以调整这里的排序,使以foo
开头的行始终位于仅包含它的行之前?
换句话说,我希望那些LIKE "foo%"
在那些LIKE "%foo%"
之前,没有重复。
您可以尝试以下操作。我在SQL Fiddle中试用了它,它很有效。
SELECT
id,
title
FROM song
WHERE text IS NOT NULL
AND title LIKE "%foo%"
ORDER BY CASE WHEN title LIKE "foo%" THEN 1 ELSE 2 END, title