mysql - 在mysql中过滤重新打开的票
问题描述
我可能在这里遇到了一些愚蠢的事情,但是我正在尝试做的是获取数据库中处于打开/待定状态的票,但我无法找到包含在某个时候关闭的票的解决方案然后重新打开。所以在这里的表格中:
票 10727 将不符合要求,因为如果我这样过滤,它将显示为已关闭:
ticket_id NOT in
(select zts.ticket_id
from zendesk_ticket_status zts
join zendesk_ticket zt on zts.ticket_id = zt.ticket_id
where zts.status IN ('closed', 'solved'))
如何确保包含门票?基本上添加某种异常,以便我还可以在状态为 ('open','pending') 和 updated_at > updated_at 时获得票证 = '已解决'?
解决方案
可能有更有效的方法可以做到这一点,但你可以这样做:
SELECT DISTINCT zts.ticket_id
FROM zendesk_ticket zts
LEFT JOIN (
SELECT ticket_id, MAX(updated_at) AS close_date
FROM zendesk_ticket
WHERE status IN ('closed', 'solved')
GROUP BY ticket_id
) AS closed_tickets ON zts.ticket_id = closed_tickets.ticket_id
WHERE closed_tickets.ticket_id IS NULL
OR zts.updated_at > closed_tickets.close_date
closed_tickets
子查询应该为每张票获取它的最大日期或closed
,solved
然后LEFT JOIN
将结果发送到主表,以便仅获取子查询中没有条目或更新更新的票
推荐阅读
- ruby-on-rails - 下载 CSV 会下载所有文件,需要它来下载特定文件
- java - 在 OpenGL 渲染器循环中什么更高效:“if”运算符或 lambda?
- ios - 在 iOS 13 中从外部存储读取文件
- mysql - 为什么这个窗口功能不起作用?我无法使用群组
- javascript - 删除双击下拉链接
- css - 用空格绑定 Vue 背景图片
- c# - 我如何允许用户进行更多尝试,而不是在捕获格式异常后重新启动游戏?
- mysql - 导出Sql查询到几个excel文件
- node.js - 代理服务器未正确处理 OPTIONS 请求
- api - 将客户信用卡信息写入 Quickbooks 在线客户表