将值以x开头的行排列在包含x的行之前



我有这个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

相关内容

最新更新