我想选择a2.date
它是否在那里,但如果NULL
我想选择a1.date
(a2
正在加入).这个:
SELECT a2.date OR a1.date
...
Run Code Online (Sandbox Code Playgroud)
简单地返回一个布尔结果(正如人们所期望的那样),但是如何获得非空列的实际值呢?(a2.date
首选,但如果它为null则a1.date
)
OMG*_*ies 104
ANSI的意思是使用COALESCE:
SELECT COALESCE(a2.date, a1.date) AS `date`
...
Run Code Online (Sandbox Code Playgroud)
MySQL本机语法是IFNULL:
SELECT IFNULL(a2.date, a1.date) AS `date`
...
Run Code Online (Sandbox Code Playgroud)
与COALESCE不同,IFNULL不能移植到其他数据库.
另一种ANSI语法CASE表达式是一个选项:
SELECT CASE
WHEN a2.date IS NULL THEN a1.date
ELSE a2.date
END AS `date`
...
Run Code Online (Sandbox Code Playgroud)
它需要更多的方向才能正常工作,但如果需求发生变化则更灵活.
使用选择CASE
语句。
SELECT CASE WHEN a2.date IS NULL THEN a1.date
ELSE a2.date END AS mydate
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
47818 次 |
最近记录: |