我试图弄清楚如何按照我想要的顺序从我的数据库中获取信息。例如,我的数据库中有以下名称:
Matt
Jimmy
Craig
Jenny
Sue
我希望按此顺序将它们删除:
Sue
Craig
Jimmy
Matt
Jenny
我如何使用MYSQL?
答案 0 :(得分:5)
当然,你可以这样做(如果我正确理解你的要求):
order by field(t.name, 'Jenny', 'Matt', 'Jimmy', 'Craig', 'Sue') desc
编辑:
实际上,如果要处理具有许多已知列值和未知值数的通用案例,常见的情况是使已知值出现在结果集的开头(在预定义的顺序)和其后的其余部分。为此,您应该以相反的顺序将预定义值添加到field
函数参数列表中,并使顺序降序。
这样'苏'将首先(field
返回5),'克雷格' - 第二(4返回),依此类推,直到'珍妮'。对于不在参数列表中的值,field
返回0.因此它们将转到结果集的末尾。
参考:FIELD
答案 1 :(得分:1)
使用:
ORDER BY CASE t.name
WHEN 'Sue' THEN 1
WHEN 'Craig' THEN 2
WHEN 'Jimmy' THEN 3
WHEN 'Matt' THEN 4
WHEN 'Jenny' THEN 5
ELSE 6
END
它使用CASE语句根据排序值分配任意值。