-4

我在按升序排序 ajax 数据表时遇到了一些麻烦,因为 mysql 中的默认值是 NULL 或 0,我不想显示它们。例如,在我的表中,我有:

item | value
-----+------
   a |     2
   b |     3
   c |     4
   d |  NULL

降序排序效果很好,但是升序会首先显示“d”,我不希望有“d”。似乎也无法自定义 js 订单,因为这是 ajax,因此订单直接在 db 中完成。

我该如何解决这个问题?

4

3 回答 3

1

您可以通过这种方式控制 null 的排序方式:

select item, value
from ...
order by case when value is null then 0 else 1 end descending,   -- or ascending (I do not full understud your question)
         value ascending                                         -- or descending (idem)
于 2012-05-04T15:14:40.407 回答
0

如果您不希望 d 在那里,请将其过滤掉。 WHERE value IS NOT NULL 问题没有多大意义,如果你给我们当前的记录、当前的结果、预期的结果会更容易。

于 2012-05-04T15:02:03.917 回答
0

当对 Jquery DataTable 使用服务器端调用时,您可以在用于使用此 order by 子句填充表的 select 语句中解决问题:

.order("case when "column_selected" is null then -9999999 else "column_selected" end "direction_sorted")

于 2018-10-31T14:12:32.987 回答