我有一个包含2个字段的MySQL表:
pd_code和pd_sort(pd_sort默认值= 0)。对于每个产品,可以指定订单索引(在pd_sort中)-1000,-900等。
因此,当我用PHP打印出产品时,我想像这样对它们进行排序。
product1(pd_sort = -100),product2(pd_sort = -90)等,然后是其他产品(pd_sort = 0),按pd_code排序。
ORDER BY pd_sort,pd_code仅适用于2种产品。
有什么建议吗?
克里斯
答案 0 :(得分:3)
如果我理解正确,你应该尝试这样的事情:
SELECT * FROM table
WHERE pd_sort <> 0
ORDER BY pd_sort
UNION
SELECT * FROM table
WHERE pd_sort = 0
ORDER BY pd_code
答案 1 :(得分:0)
作为jab suggested的联盟应该相当有效,即使它确实导致两个查询而不是一个查询。
如果您因任何原因不想进行联合,另一种方法是让select
通过操纵pd_code
和pd_sort
值生成列,并排序那一栏。您没有向我们提供样本数据(除了几个pd_sort
值之外),但在大多数情况下,您可以操纵数据,以便最终获得可排序的值,通常只是通过做concats或数字表达式。但在最复杂的情况下,您可以使用case
语句。