mysql - 选择一列中具有非空值的最新记录

标签 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。)

例如

SELECT `keyword`, `count` , max( `date` ) 
FROM `keywords` 
WHERE keyword = "ipod"
AND `count` IS NOT NULL 
GROUP BY keyword

这返回了正确的日期,但没有正确的计数(返回 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 `keyword`, `count` , `date`
FROM `keywords` 
WHERE keyword = "ipod"
AND `count` IS NOT NULL 
order by date desc 
limit 1

关于mysql - 选择一列中具有非空值的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1740199/

相关文章:

mysql - mybatis mapper中sql保存emoji失败

mysql - 别名导致 where 子句出错 - MySQL

sql - 在完全外连接期间排除空值

php - CodeIgniter将var val匹配到mysql db

c++ - cpp-Mysql undefined reference 'a function'错误

mysql - 内连接从子表中的外键获取 "name"属性

ruby - 如何验证ruby cucumber中抛出的异常

c# - (C#) 重载 == 运算符时出现问题

c++ - 创建比初始化 C++ 更大的数组时会发生什么

node.js - Node /更新/API/序列化 : UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'email' of null