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