我有以下表,其中order_date
和delivery_date
的类型为“VARCHAR”检查其他列列是否为空
id name order_date delivery_date
---------------------------------------------------------
1 A 04/01/2017 04/08/2017
2 B 04/01/2017 NULL
3 C 04/02/2017 04/03/2017
4 D 04/04/2017 04/05/2017
5 E 04/05/2017 04/11/2017
6 F 04/11/2017 NULL
7 G 04/15/2017 04/17/2017
8 H 04/18/2017 NULL
我需要所有具有
* delivery_date between 04/01/2017 TO 04/15/2017
* if delivery_date IS NULL then check order_date between 04/01/2017 TO 04/15/2017
(in this case order_date is assumed as delivery_date)
我记录'm试试这个代码:
SELECT *,
IF(delivery_date IS NOT NULL, `delivery_date`, `order_date`) as `final_date`
FROM `test`
WHERE STR_TO_DATE(`final_date` ,'%m/%d/%Y') BETWEEN STR_TO_DATE('04/01/2017','%m/%d/%Y') AND STR_TO_DATE('04/15/2017','%m/%d/%Y')
但是是给这个错误:
Unknown column 'final_date' in 'where clause'
#1:使用'COALESCE(delivery_date,order_date)'而不是哪个是Standrad SQL。 #2:在'WHERE'重复计算,因为你不能在这里使用别名 – dnoeth
简单的规则你不能在where子句中使用别名。 –