2009-11-03 29 views
0

我想弄清楚如何从我的数据库中以我想要的顺序获取信息。例如,我有下面的名字在我的数据库:MYSQL联合还是排序?

Matt 
Jimmy 
Craig 
Jenny 
Sue 

我想出来的顺序如下:

Sue 
Craig 
Jimmy 
Matt 
Jenny 

我会怎么做,使用MYSQL?

+1

那么,有没有您想要使用或只是随机的,数据库将永远不会有任何其他的名字比这些任何算法? – Cellfish 2009-11-03 04:16:01

回答

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语句将基于对排序的值的任意值。

5

当然,你可以像下面这样做(如果我理解正确你的要求):

order by field(t.name, 'Jenny', 'Matt', 'Jimmy', 'Craig', 'Sue') desc 

编辑:

其实,如果你要处理与一些已经是通用的情况下,已知值的列和未知值的数量,常见的情况是将已知值显示在结果集的开始处(按预定义的顺序),其余部分在后面。为此,您应该按照与field函数参数列表相反的顺序添加预定义值,并使订单降序。

这样'Sue'先走(field返回5),'Craig' - 第二(4返回)等等直到'Jenny'。对于不在参数列表中的值,field返回0.因此,它们将转到结果集的末尾。

参考:FIELD