Mysql 在一列中选择具有非空值的最新记录

Mysql 在一列中选择具有非空值的最新记录,mysql,null,Mysql,Null,我有这样的表数据 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 现在,我要做的是获取具有最新日期但具有非空计数的行的计数。在这种情况下,第3行的计数为150。) 乙二醇 这返回了正确的日期,但没有返回正确的计数(返回200)。我还试着在它自己身上做一个左连接 S

我有这样的表数据

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
现在,我要做的是获取具有最新日期但具有非空计数的行的计数。在这种情况下,第3行的计数为150。)

乙二醇

这返回了正确的日期,但没有返回正确的计数(返回200)。我还试着在它自己身上做一个左连接

SELECT `t1`.`keyword` , `t2`.`count` , max( `t1`.`id` )
FROM `keywords` `t1`
LEFT JOIN `keywords` `t2` ON `t1`.`id` = `t2`.`id`
WHERE `t1`.`keyword` = 'ipod'
AND `t1`.`count` IS NOT NULL
GROUP BY `t1`.`keyword`
这确实得到了最大id,但它没有像我希望的那样留下连接,只返回了200个

帮助?

我肯定有更好的方法,但同时:

SELECT `count`
FROM `keywords` 
WHERE keyword = "ipod"
AND `count` IS NOT NULL 
ORDER BY `date` DESC
LIMIT 1
应该符合你的要求。请注意,LIMIT不是可移植SQL,因此它只适用于MySQL。
orderby
子句是强制数据库按日期排序所必需的


当我提到应该有更好的方法时,这仅仅是因为
LIMIT
子句的工作方式,即:数据库必须获取满足查询条件的所有行,然后简单地将结果集截断为
LIMIT

指定的所需数量。这对您有用吗:

SELECT `keyword`, `count`, `date` 
FROM `keywords` 
WHERE keyword = "ipod"
AND `count` IS NOT NULL 
ORDER BY DATE DESC
LIMIT 1

啊,这么简单。。。我只是想装腔作势。谢谢
SELECT `count`
FROM `keywords` 
WHERE keyword = "ipod"
AND `count` IS NOT NULL 
ORDER BY `date` DESC
LIMIT 1
SELECT `keyword`, `count`, `date` 
FROM `keywords` 
WHERE keyword = "ipod"
AND `count` IS NOT NULL 
ORDER BY DATE DESC
LIMIT 1