什么是更好的方式来说'col1< IFNULL(col2,999999)`和`ORDER BY IFNULL(col3,999999)`?

时间:2018-02-08 18:47:39

标签: mysql sql

如果我使用的是程序编程语言,我会使用sys.MAX_INT之类的东西代替999999.在SQL中是否存在这样的东西?或者是否有一种更简洁的方法来摆脱这个SQL中的999999?

SELECT 
     * 
FROM 
    tbl1 
WHERE 
    col1 < IFNULL(col2, 999999) 
ORDER BY 
    IFNULL(col3, 999999);

2 个答案:

答案 0 :(得分:3)

您可以使用~0代替“MAX_INT”

请检查这个答案。

In SQL how do I get the maximum value for an integer?

在你的情况下......

SELECT 
     * 
FROM 
    tbl1 
WHERE 
    col1 < IFNULL(col2, ~0) 
ORDER BY 
    IFNULL(col3, ~0);

答案 1 :(得分:2)

您的代码相当于:

select t.*
from tb1 t
where col1 < col2 or col2 is null
order by (col3 is not null) desc, col3;