当我想从优先级列表中找到第一列非空白的列时,我个人会使用合并。
例如,我想从客户表中获取一个电话号码,他们有 3 列电话号码分别命名为 mobile、home 和 work,但我只想检索第一个非空白号码。
在这种情况下,我的优先级是移动,然后是家庭,然后是工作。
TABLE STRUCTURE
--------------------------------------------
| id | customername | mobile | home | work |
--------------------------------------------
| 1 | Joe | 123 | 456 | 789 |
--------------------------------------------
| 2 | Jane | | 654 | 987 |
--------------------------------------------
| 3 | John | | | 321 |
--------------------------------------------
SELECT id, customername, COALESCE(mobile, home, work) AS phone FROM customers
RESULT
------------------------------
| id | customername | phone |
------------------------------
| 1 | Joe | 123 |
------------------------------
| 2 | Jane | 654 |
------------------------------
| 3 | John | 321 |
------------------------------