微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – mysql order by字段为NULL值最后

我在order by子句中使用FIELD函数时遇到问题.

我的情况是一个产品可以有三个类别,用户可以选择什么类别来显示.所以有三种可能的查询可以形成.这些是:

查询1

SELECT 
    *
FROM
    my_table
WHERE
    main_categories_id = 2
ORDER BY FIELD(product_condition,'graded','new','used');

查询2

SELECT 
    *
FROM
    my_table
WHERE
    main_categories_id = 2
ORDER BY FIELD(product_condition,'used');

查询3

SELECT 
    *
FROM
    my_table
WHERE
    main_categories_id = 2
ORDER BY FIELD(product_condition,'used','graded');

当产品条件为NULL时,它不能正常工作,因为它始终显示具有NULL值的行.我需要这些最后出现.

我已经尝试向FIELD函数添加NULL,但这似乎不起作用.

有人知道我能做到这一点吗?

谢谢你的帮助.

你可以:

>首先明确排序列是否为NULL,然后通过其值:

ORDER BY product_condition IS NULL,FIELD(...)

这是因为product_condition IS NULL对于非NULL列将为0,对于NULL列为1;以(认)升序排列,前者显然会先到.
>依赖于NULL按照排序顺序排序,并将参数反转到FIELD()的事实:

ORDER BY FIELD(product_condition,...) DESC

原文地址:https://www.jb51.cc/php/133102.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐