php - mysql - 按大于0的字段排序

时间:2018-05-28 11:56:23

标签: php mysql sql mysqli

假设我的数据库中有这些行:

 bill_id    bill_portal amount  currency
    100     20          33      D
    100     10          43      D

我想对字段进行排序,我需要先返回值不为零的字段,当值为零时,排序的行应该如下所示

1
0
5
2
0
3
3
5
0
5

我不想按数字排序,我想最后显示0个值,

我已经使用了这段代码,但它按数字排序:

1
5
2
3
3
5
5
0
0
0

我该怎么办?

3 个答案:

答案 0 :(得分:3)

在MySQL中,您可以使用两个键进行排序。请注意,SQL表表示无序集。所以,天真地,你可以把零排在第一位,只需按值排序(假设值是非负的):

order by num_mojud

这似乎没有你想要的。您可以通过执行以下操作将第一个零和其余部分放在任意顺序中:

order by (num_mojud = 0) desc

MySQL将布尔值视为数字,“1”表示true,“0”表示false。因此,按键排序desc

您可以通过执行以下操作将<0>随机顺序放在第一位。

order by (num_mojud = 0) desc, rand()

如果您的列具有所需的顺序,则可以先将零保留为零并保留其余的顺序:

order by (num_mojud = 0) desc, id

答案 1 :(得分:0)

>>> import example
>>> example.add(1, 2)  # add(int, int)
3
>>> example.add(1.5, 2)  # add(double, double)
3.5
>>> example.add_long_long(1, 2)  # add(long, long)
3
>>> example.add_long_long(1 << 30, 1 << 30)  # add(long, long)
2147483648
>>> example.add(1 << 30, 1 << 30)  # add(int, int)
-2147483648

答案 2 :(得分:0)

您可以从自定义表格中选择num_mojud

第一个:SELECT num_mojud FROM tableName WHERE num_mojud > 0获取大于0的所有数字 第二个:SELECT num_mojud FROM tableName WHERE num_mojud = 0所有数字都等于0

SELECT num_mojud 
FROM (
    (SELECT num_mojud FROM tableName WHERE num_mojud > 0) 
    UNION
    (SELECT num_mojud FROM tableName WHERE num_mojud = 0)
) as myCustomTable