22

次のような test という名前のテーブルがあるとします。

ID   DATE     

1     '2013-01-26'
1     NULL
1     '2013-03-03'      
2     '2013-02-23'      
2     '2013-04-12'      
2     '2013-05-02'   

そして、私はこのテーブルから取得したいと思います:

ID   DATE     

1     NULL    
2     '2013-05-02'   

これが私のクエリです:

select ID, max(DATE)
from test
group by ID

問題は、MYSQL が NULL 値を無視して私を返すことです

ID   DATE     

1     '2013-03-03'   
2     '2013-05-02' 

NULL がある場合、MAX を NULL として取得するにはどうすればよいですか?

4

4 に答える 4

27

これを試してみてください:

SELECT ID, case when MAX(DATE IS NULL) = 0 THEN max(DATE) END AS DATE
FROM test
GROUP BY ID;
于 2013-11-04T08:21:10.390 に答える
11

Null は値でも数値でもなく、単なる null です。これが、「col1 = null」ではなく「col1 is null」を使用する理由です。回避策は、IFNULL を使用して非常に高い値を設定することです。

select ID, max(IFNULL(DATE,'3000-01-01'))
from test
group by ID
于 2013-11-04T08:24:30.623 に答える