mysql min忽略null-需要变通/调整
对于此查询mysql min忽略null-需要变通/调整,mysql,Mysql,对于此查询 SELECT min(date) min_date FROM order_products group by order_id min\u date忽略订单id组中的NULL值 在我的例子中,如果组的order\u products元组的date值为NULL,我希望min\u date=NULL 有什么办法可以做到这一点吗?如果您的问题域允许定义“绝对最小日期”,那么其中一种方法就是使用ISNULL()/COALESCE()表达式将可空字段转换为非空字段 ISNULL(日期字段,
SELECT min(date) min_date FROM order_products group by order_id
min\u date
忽略订单id组中的NULL
值
在我的例子中,如果组的order\u products元组的date值为NULL,我希望min\u date=NULL
有什么办法可以做到这一点吗?如果您的问题域允许定义“绝对最小日期”,那么其中一种方法就是使用ISNULL()/COALESCE()表达式将可空字段转换为非空字段
ISNULL(日期字段,'1000-01-01')
另一种方法(如果无法定义有意义的“最小”默认值)是通过两个查询来完成,首先选择带有null的填充,然后如果结果集为空,则在date不为null的地方添加填充。简单的解决方法可以是:
SELECT min(IFNULL(date, '1970-01-01')) AS min_date
FROM order_products
GROUP BY order_id
所以,如果出现1970/01/01,你知道有一个空值
select case when count(date)=sum(1) then min(date) else null end
或者,当所有行都不为空时,返回min date,否则返回null。如果问题是关于从多个列中查找最小日期,则以下内容可能会有所帮助
SELECT
LEAST
(IFNULL(date_1, date(CURRENT_DATE()+1)),
IFNULL(date_2, date(CURRENT_DATE()+1)),
IFNULL(date_3, date(CURRENT_DATE()+1))) as MinimumDate
FROM YourTable;
此查询将所有最小日期值返回为“1970-01-01”。你确定这个有效吗?你以前试过吗?@shikhar:不,我以前没有试过,但我现在试过了,它对我有效。也许所有订单中都有空的?