SELECT min(date) min_date FROM order_products group by order_id
min_date
忽略一组订单ID的在NULL
值。
在我的情况下,我希望min_date = NULL,如果该组有一个order_products在日期为空值的元组。
任何想法我怎么能做到这一点?
SELECT min(date) min_date FROM order_products group by order_id
min_date
忽略一组订单ID的在NULL
值。
在我的情况下,我希望min_date = NULL,如果该组有一个order_products在日期为空值的元组。
任何想法我怎么能做到这一点?
简单的解决方法可能是:
SELECT min(IFNULL(date, '1970-01-01')) AS min_date
FROM order_products
GROUP BY order_id
所以,如果1970/01/01轮番上涨,你知道,有一个NULL值。
如果您的问题域允许定义“绝对最小日期”,则使用ISNULL()/ COALESCE()表达式将可为空的字段变为非空值。
ISNULL(dateField, '1000-01-01')
另一个(F没有意义的“最小的”默认可以被定义)是通过2个查询做到这一点 - 用null第一选择的东西,然后如果结果集是空的,加入的东西,其中日期NOT NULL
select case when count(date)=sum(1) then min(date) else null end
或者,当所有的行不为空时,返回最小日期,否则返回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;
此查询将所有min_date值返回为'1970-01-01'。你确定这一个工程,你有没有尝试过吗? – shikhar 2010-03-31 13:15:35
@shikhar:不,我以前没有尝试过,但现在我尝试了它,它对我很有用。所有订单中可能有NULL? – Bobby 2010-03-31 13:24:02
嘿谢谢..我真的有所有NULL ..它的工作 – shikhar 2010-03-31 14:15:12