如果有,我想 Select a2.date
,但如果是NULL
,我想 Select a1.date
(a2
被左连接).这是:
SELECT a2.date OR a1.date
...
简单地返回一个布尔结果(正如人们所期望的那样),如何获得非空列的实际值呢?(首选a2.date
,但如果为空,则为a1.date
)
如果有,我想 Select a2.date
,但如果是NULL
,我想 Select a1.date
(a2
被左连接).这是:
SELECT a2.date OR a1.date
...
简单地返回一个布尔结果(正如人们所期望的那样),如何获得非空列的实际值呢?(首选a2.date
,但如果为空,则为a1.date
)
ANSI的方法是使用COALESCE:
SELECT COALESCE(a2.date, a1.date) AS `date`
...
MySQL本机语法为IFNULL:
SELECT IFNULL(a2.date, a1.date) AS `date`
...
与COALESCE不同,IFNULL不能移植到其他数据库.
另一种ANSI语法CASE expression是一个选项:
SELECT CASE
WHEN a2.date IS NULL THEN a1.date
ELSE a2.date
END AS `date`
...
它需要更多的指导才能正常工作,但如果需求发生变化,它会更加灵活.