mysql - 在两个表之间的数据比较中查找最新值
问题描述
我的数据库中有 2 个表,我想比较我对每个表所做的 2 个选择查询的值
表 1:click_log
查询表一:
SELECT *
FROM click_log
表 2:km_articles
查询表2:
SELECT km_article_no
FROM km_articles
WHERE km_article_date <= "2017-10-31" AND km_article_status = "Published" AND km_article_view_count <= "5"
我要比较的列是带有 km_article_no 的表 1 的表 link_clicked,我知道我会找到重复匹配,但是从这些重复匹配中我想找到我想从表 1 中名为“when_clicked”的另一列中获得的最新匹配包含数据信息,不确定如何将这些信息放在一起进行查询,然后缩小范围。
这就是表格的样子:
表格1:
|link_clicked|when_clicked KB00001 | 2017-08-02 KB00001 | 2017-12-02 KB00002 | 2017-08-02 KB00002 | 2017-09-02 KB00003 | 2017-09-02 KB00003 | 2017-09-02
表 2:
km_article_no|km_article_ti|km_article_status|km_article_view_count|km_article_date KB00001 |outlook IOS | 发表 | 5 | 2017-01-02 KB00002 |外观 CSS | 发表 | 4 | 2017-01-05 KB00003 |展望中兴通讯 | 退休 | 3 | 2017-01-09
解决方案
如果我理解正确,您想显示所有km_articles
行,每行都有最新的相关click_log.when_clicked
日期。因此,汇总您的click_log
perlink_clicked
并找到最大值when_clicked
。然后加入到km_articles
.
select kma.*, cl.last_clicked
from km_articles kma
join
(
select link_clicked, max(when_clicked) as last_clicked
from click_log
group by link_clicked
) cl on cl.link_clicked = kma.km_article_no
where kma.km_article_date <= date '2017-10-31'
and kma.km_article_status = 'Published'
and kma.km_article_view_count <= 5;
(如果您还想显示km_articles
在 中不匹配的行,click_log
则更join
改为left join
。)
推荐阅读
- cobol - 被调用程序在调用程序中编写或定义变量?
- python - 如何使用 python(numpy)将日期时间从 CSV 文件添加到 x 轴?
- node.js - Teams 中的主动消息传递机器人,无需事先提及该机器人
- django - 简单地将所有用户输入数据保存在 Django 中?
- youtube - bookdown 中的 youtube 链接
- python - 如果内容中有各种标签,我如何抓取所有内容?
- nativescript - 如何从 IOS 的列表视图中删除分隔线?
- xml - 如何使用 xslt 将静态元素添加到 xml 的末尾
- javascript - 如何为评论者和查看者设置禁用选项以下载、打印和复制
- java - 在 Spring v1.5.14.RELEASE 中模拟返回 List 的 RestTemplate