我正在尝试按我的两个数据库列结果对数据进行排序。
目前我的数据样本如下:
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 an equal value in MySQL
Conditional MySQL order by two (equally important) columns
---- ---- EDIT
如果我按
订购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
我得到以下结果,中间过期,我希望能够首先强调显示活动记录,因为这只是一个更大的数据集的一个小样本:
name type state
greg 1 active
paul 1 expired
judy 2 expired
joan 3 active
john 3 expired
jane 3 expired
感谢您的期待!
答案 0 :(得分:3)
在您的ORDER BY
声明中,状态“有效”在字母顺序中“过期”之前,因此您需要按ASCENDANT排序
编辑:为了获得您提出的确切输出,您可以使用ORDER BY FIELD(fieldname, '1st val', '2nd val')
来自定义确切的顺序:
ORDER BY FIELD(`type`, 1, 3, 2), FIELD(`type`, "active", "expired");
答案 1 :(得分:1)
试试这个::
Select
*
from
myTable
GROUP BY state, type HAVING STATE='active'
ORDER BY `TYPE`, `state`