MYSQL联合或订购?

时间:2009-11-03 04:13:32

标签: sql mysql

我试图弄清楚如何按照我想要的顺序从我的数据库中获取信息。例如,我的数据库中有以下名称:

Matt
Jimmy
Craig
Jenny
Sue

我希望按此顺序将它们删除:

Sue
Craig
Jimmy
Matt
Jenny

我如何使用MYSQL?

2 个答案:

答案 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语句根据排序值分配任意值。