0

我正在尝试按我的两个数据库列结果对我的数据进行排序。

目前我的数据样本如下所示:

name   type   state
paul   1      expired
john   3      expired
greg   1      active
jane   3      expired
joan   3      active
judy   2      expired

我想先按活动显示我的数据,然后按如下类型显示我的数据:

name   type   state
greg   1      active
paul   1      expired

joan   3      active
jane   3      expired
john   3      expired

judy   2      expired

我尝试了以下几种组合:

ORDER BY type desc, state desc

这允许我按类型排序,但不允许我把所有活动的放在第一位。我还按状态排序,然后键入,但这会将所有活动的放在顶部,然后按类型在其下方排序。

欢迎大家提出意见!

我在试图找到答案的同时查看了这两个帖子,到目前为止我还没有任何运气。

ORDER BY MySQL 中的相等值

条件 MySQL 按两列(同等重要)排序

- - 编辑 - -

如果我订购

ORDER BY state, type

我得到以下结果:

name   type   state
greg   1      active
joan   3      active
paul   1      expired
john   3      expired
jane   3      expired
judy   2      expired

----编辑2----

如果我订购

ORDER BY type, state

我得到以下结果,中间是 expired ,我希望能够首先强调显示活动记录,因为这只是更大数据集的一个小样本:

name   type   state
greg   1      active
paul   1      expired
judy   2      expired
joan   3      active
john   3      expired
jane   3      expired

感谢您的关注!

4

2 回答 2

3

在您的ORDER BY声明中,状态“活动”按字母顺序位于“过期”之前,因此您需要按 ASCENDANT 排序

编辑:并且为了获得您要求的确切输出,您可以使用ORDER BY FIELD(fieldname, '1st val', '2nd val')它允许您自定义确切的顺序:

ORDER BY FIELD(`type`, 1, 3, 2), FIELD(`type`, "active", "expired");
于 2013-10-23T10:06:08.400 回答
1

尝试这个::

Select 
* 
from 
myTable
GROUP BY state, type HAVING STATE='active'
    ORDER BY `TYPE`, `state`
于 2013-10-23T09:56:28.637 回答