MySQL按2个参数排序

时间:2010-09-21 07:29:17

标签: mysql sorting

我有一个包含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种产品。

有什么建议吗?

克里斯

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_codepd_sort值生成列,并排序那一栏。您没有向我们提供样本数据(除了几个pd_sort值之外),但在大多数情况下,您可以操纵数据,以便最终获得可排序的值,通常只是通过做concats或数字表达式。但在最复杂的情​​况下,您可以使用case语句。