2009-11-16 28 views
2

SELECT the newest record with a non null value in one column选择带有非空值的所有最新的记录不同关键词在一列

我知道有一个问题,我有这样的数据

id | keyword | count | date 
1 | ipod | 200 | 2009-08-02 
2 | ipod | 250 | 2009-09-01 
3 | ipod | 150 | 2009-09-04 
4 | ipod | NULL | 2009-09-07 
5 | apple | 100 | 2009-07-01 
6 | apple | 98 | 2009-07-05 
7 | apple | 500 | 2009-07-30 
8 | itunes | NULL | 2009-08-30 
9 | itunes | 50 | 2009-09-10 
10 | itunes | NULL | 2009-09-15 

而且需要一个查询它将取出行 3,7和9 具有最新日期且非空的行。

+0

我们正在做功课? – lexu 2009-11-16 05:46:50

+1

不,我有一个13万行的数据库(如上所述),我试图将所有好的'唯一关键字'数据分离出来,放到另一个我们将在另一台服务器上托管的表中。 – Wizzard 2009-11-16 06:05:28

回答

2

用途:

SELECT t.id, 
     t.keyword, 
     t.count, 
     t.date 
    FROM TABLE t 
    JOIN (SELECT t.keyword, 
       MAX(t.date) 'max_date' 
      FROM TABLE t 
     WHERE t.count IS NOT NULL 
     GROUP BY t.keyword) x ON x.keyword = t.keyword 
          AND x.max_date = t.date 
+0

要评论它做了什么:内部选择建立一个(关键字,largest_date)元组表,不包括具有NULL计数的元组日期。然后它使用该(连接)匹配所需的列。 – Thanatos 2009-11-27 03:59:52

相关问题