可能为 NULL 单元格的两列的差异

Goo*_*bot 0 mysql null query order-by select

我需要按两列的差异对表格进行排序

SELECT (first - second) AS dif
    FROM table1
ORDER BY dif DESC
Run Code Online (Sandbox Code Playgroud)

但两列可以NULL。在这种情况下,它返回错误:

BIGINT UNSIGNED value is out of range
Run Code Online (Sandbox Code Playgroud)

这个错误的解决方案是使用IFNULL(col,0),但问题是,我需要difNULL,如果任一列是NULL

Phi*_*lᵀᴹ 5

有很多方法可以做到这一点,但我发现这是可读的:

SELECT CASE WHEN first IS NULL OR second IS NULL THEN NULL
       ELSE first - second END AS dif
    FROM table1
ORDER BY 1 DESC
Run Code Online (Sandbox Code Playgroud)