我不确定标题是否说得对,很可能不是:)
所以我有products桌子,我想在他们制作的季节之前订购.
如果'spring'是1,'summer' - 2,'autumn' - 3和'winter' - 4,我怎样才能以这样的方式订购它们以便首先显示'summer',然后是'spring',然后是'winter' '并在'秋天'结束.就像2,1,4,3一样.
为了更清楚地说明,我希望能够改变规则.可能是2,1,4,3或4,2,1,3等.这是为了展示季节产品.
希望解释有助于解决问题.欢迎任何解决方案.数据库是MySQL,语言PHP.
Ron*_*nis 11
这适用于所有主要的dbms:
order
by case when season = 2 then 1
when season = 1 then 2
when season = 4 then 3
when season = 3 then 4
end;
Run Code Online (Sandbox Code Playgroud)
您还可以在季节表中添加一列,以指示它们应如何排序:
table season(
season_id int
,ordinal int
);
select ...
from tab t
join seasons s on(t.season_id = s.season_id)
order
by s.ordinal;
Run Code Online (Sandbox Code Playgroud)
...或者,如果您想编写非可移植代码,您可以使用:
order by field(season_id, 2,1,4,3);
Run Code Online (Sandbox Code Playgroud)
创建一串"季节"ID.然后按字段顺序执行:
SELECT * FROM foo ORDER BY FIELD(season_id, 4, 2, 1, 3);
Run Code Online (Sandbox Code Playgroud)
用插值的php变量替换4,2,1,3部分.
| 归档时间: |
|
| 查看次数: |
4158 次 |
| 最近记录: |