gpt4 book ai didi

php - mysql 按字段排序,最后有 NULL 值

转载 作者:IT老高 更新时间:2023-10-29 00:06:47 24 4
gpt4 key购买 nike

我在 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,
'new',
'graded',
'used');

查询 3

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

这在产品条件为 NULL 时效果不佳,因为它总是首先显示具有 NULL 值的行。我需要这些最后出现。

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

有人知道我可以实现这个的方法吗?

感谢您的帮助。

最佳答案

您可以:

  1. 根据列是否为NULL然后显式排序:

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

    这是有效的,因为 product_condition IS NULL 对于非 NULL 列将是 0,对于 NULL 列将是 1;并且在(默认)升序中,前者显然会排在第一位。

  2. 依靠 NULL 按降序排列最后的事实,并将参数反转为 FIELD():

    ORDER BY FIELD(product_condition, ...) DESC

关于php - mysql 按字段排序,最后有 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22219945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com