如果我使用的是程序编程语言,我会使用sys.MAX_INT之类的东西代替999999.在SQL中是否存在这样的东西?或者是否有一种更简洁的方法来摆脱这个SQL中的999999?
SELECT
*
FROM
tbl1
WHERE
col1 < IFNULL(col2, 999999)
ORDER BY
IFNULL(col3, 999999);
答案 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;