我在按升序排序 ajax 数据表时遇到了一些麻烦,因为 mysql 中的默认值是 NULL 或 0,我不想显示它们。例如,在我的表中,我有:
item | value
-----+------
a | 2
b | 3
c | 4
d | NULL
降序排序效果很好,但是升序会首先显示“d”,我不希望有“d”。似乎也无法自定义 js 订单,因为这是 ajax,因此订单直接在 db 中完成。
我该如何解决这个问题?
我在按升序排序 ajax 数据表时遇到了一些麻烦,因为 mysql 中的默认值是 NULL 或 0,我不想显示它们。例如,在我的表中,我有:
item | value
-----+------
a | 2
b | 3
c | 4
d | NULL
降序排序效果很好,但是升序会首先显示“d”,我不希望有“d”。似乎也无法自定义 js 订单,因为这是 ajax,因此订单直接在 db 中完成。
我该如何解决这个问题?
您可以通过这种方式控制 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)
如果您不希望 d 在那里,请将其过滤掉。 WHERE value IS NOT NULL
问题没有多大意义,如果你给我们当前的记录、当前的结果、预期的结果会更容易。
当对 Jquery DataTable 使用服务器端调用时,您可以在用于使用此 order by 子句填充表的 select 语句中解决问题:
.order("case when "column_selected" is null then -9999999 else "column_selected" end "direction_sorted")