喜欢和平等的SQL顺序?
说我有如下表:喜欢和平等的SQL顺序?
ID Author
---------------------
1 Bill
2 Joe
3 Bill and Joe
4 Bill
而且我要的结果集将来自:
SELECT id FROM table WHERE Author LIKE '%Bill%' OR Author = 'Bill'
我怎么会为了它,使平等匹配的行是第一行返回和类似的比赛来之后?例如该查询将返回1,4,3
。我正在使用MySQL,但会在任何数据库中得到答案。
SELECT id
FROM YourTable
WHERE Author LIKE '%Bill%'
ORDER BY CASE WHEN Author = 'Bill' THEN 0
ELSE 1
END
你可能只需要做ORDER BY Author != 'Bill'
以及 - 不知道有关MySQL的布尔表达式订购。
+1我经常使用if但case语句更加标准。 –
@nick - 任何关于我的想法'ORDER BY Author'='Bill''会被视为'0'和'1',因为我认为可能会发生? –
SELECT id
FROM table
WHERE Author LIKE '%Bill%'
order by if(author='Bill',1,2)
第二个“OR”是多余的 –
你是对的马丁。我只是在考虑排序。编辑后。 –
我已经测试在DB和ORDER数据BY的作品,你想,没有任何问题,但你可以用下面的查询:
新建查询:
select Author, CONCAT(Author, ' ') as text_n
from table where Author like '%Bill%' order by text_n;
您编辑查询:
SELECT id FROM table WHERE Author LIKE '%Bill%' order by Author;
如果该测试需要扩展到多个变量,我已经扩展了一些Martin的ans WER以下方式(例如3个标准):
SELECT id
FROM YourTable
WHERE Author LIKE '%Bill%'
ORDER BY
(CASE WHEN criteria_1='target_1' THEN 1 ELSE 2 END)
*
(CASE WHEN criteria_2='target_2' THEN 1 ELSE 2 END)
*
(CASE WHEN criteria_3='target_3' THEN 1 ELSE 2 END)
最好的问候(和许多感谢Martin),
你应该考虑正常化表。 –