sql - 跨两个表的 SQL 查询仅显示每个标签地址最近更新的结果
问题描述
我有两张桌子:violator_state
和violator_tags
违规者状态:
m_state_id
is_violating
m_translatedid
m_tag
m_violator_tag
该表包含“标签”,在这种情况下,其行数不变为 10。目的是列出每个存在的标签,将完整的标签地址 (m_violator_tag) 与其简写名称 (m_tag) 连接起来,并说明它是否处于“违规”状态。由于 m_violator_tag 和 m_tag 之间的链接,我需要使用此表作为参考。
违规者标签
m_violator_id
m_eval_time_from
m_eval_time_to
m_tag
m_tag_peers
m_tag_position
该表不断添加新行,其中包含哪些标签违反特定标签的信息。所以它会显示 T6 违反了 T1、T2、T9 等。
我正在寻找一个查询,它连接两个表以仅显示每个标签的最近更新(最大的 m_eval_time_from)。
我正在使用以下查询来连接这两个表,但我希望 m_translatedid 和 m_tag 匹配,但它们不匹配。不确定为什么。
SELECT violator_state.m_violator_tag, violator_state.is_violating, violator_state.m_translatedid, violator_tags.m_tag, violator_tags.m_eval_time_to, violator_tags.m_tag_peers,
violator_tags.m_tag_position, violator_tags.m_eval_time_from
FROM violator_tags CROSS JOIN
violator_state
关于我应该尝试什么的任何建议?
解决方案
您的 CROSS JOIN 将为您提供一个笛卡尔积,其中第一个表中的每一行都与第二个表中的所有行配对,例如,如果每个表中有 10 行,您将得到 10 x 10 = 100 行的结果!我相信您需要加入 m_tag 列上的表格并选择具有最新日期的 violator_tags 行。下面的查询应该为您执行此操作(尽管您没有以一种便于我仔细检查我的代码的方式提供您的问题 - 请参阅a_horse_with_no_name提供的链接以了解更多信息或使用类似 db- 的网站小提琴来设置你的例子)。
SELECT vs.m_violator_tag,
vs.is_violating,
vs.m_translatedid,
vt.m_tag,
vt.m_eval_time_to,
vt.m_tag_peers,
vt.m_tag_position,
vt.m_eval_time_from
FROM violator_tags vt
JOIN violator_state vs
ON vt.m_tag = vs.m_tag
AND vt.m_eval_time_from = (SELECT MAX(vt.m_eval_time_from)
FROM violator_tags
WHERE m_tag = vt.m_tag)
推荐阅读
- node.js - Firebase 管理员:是否有必要检查服务器上解码的 uid(基于客户端 ID 令牌)是否与客户端的 uid 匹配?
- flutter - Flutter ListView 的自定义 Widget 包括 ListView 给出错误
- docker - Terraform docker_container 标签不起作用?
- python - 在 Python 3.7 中设置动态加载模块的路径
- php - Jquery点击功能和ajax代码调用php文件上传图片的问题
- ionic3 - 在 Ionic 3 应用程序中打开外部链接
- logging - Microsoft.Extensions.Logging 与。日志
- android - OneSignal InAppMessageClickHandler 使 Android 上的 React Native 应用程序崩溃
- php - 我在 codeigniter 中的购物车有一些问题
- c# - 从单个 Excel (CSV) 文件导入特定工作表