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