查询具有与特定值匹配的JOIN记录的记录(例如,已批准、未批准、挂起)

  • 本文关键字:记录 例如 挂起 未批准 JOIN 查询 sql
  • 更新时间 :
  • 英文 :


我有一个查询,它返回一条记录以及与之相关的各种审批的状态。我只想看到那些有";批准";与记录关联的所有审批的状态。显示状态的字段是t3.status。如果t2.status是从所有加入的记录中"批准"的,那就是我要找的。

看起来很简单,但我不太确定该怎么写。

SELECT *
FROM change_request
JOIN approval t2 ON t2.parentsysid = change_request.sysid  
JOIN appuser t3 ON t3.userid = t2.userId

我不知道批准的状态是如何存储在您的数据库中的——我假设有一个名为status的列,值为"批准";。将查询更改为数据库中的存储方式

SELECT *
FROM change_request
JOIN approval t2 ON t2.parentsysid = change_request.sysid  
LEFT JOIN non_approve n on n.parentsysid = change_request.sysid and n.status <> 'approved'
JOIN appuser t3 ON t3.userid = t2.userId
WHERE n.parentsysid is null

这是如何工作的——在这里,我们将join留在表中,以查找您不想要的任何情况。然后,我们只选择没有发生连接的情况。这意味着没有你不想要的东西。

您也可以使用NOT EXISTS,但在大多数系统上,速度比此方法慢。

相关内容

最新更新