繁体   English   中英

如何按自定义规则订购,例如如何订购4,2,1,3

[英]How to order by custom rule, e.g. how to order like 4,2,1,3

我不确定标题是否说得对,很可能不是:)

所以我有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。

这适用于所有主要的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;

您还可以在季节表中添加一列,以指示它们应如何排序:

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;

...或者,如果您想编写非可移植代码,您可以使用:

order by field(season_id, 2,1,4,3);

创建一串“季节”ID。 然后按字段顺序执行:

SELECT * FROM foo ORDER BY FIELD(season_id, 4, 2, 1, 3);

用插值的php变量替换4,2,1,3部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM