【发布时间】:2021-12-03 05:10:45
【问题描述】:
我正在尝试在 SQL 中做一些不同的事情。我发现了 MINUS 运算符,它似乎完全符合我的需要:https://www.geeksforgeeks.org/sql-minus-operator/
我试图弄清楚是否有办法通过 typeorm 使用这个运算符。我目前正在使用connection.getRepository().createQueryBuilder(),并且在生成的查询生成器上看不到任何看起来与 MINUS 运算符相对应的方法。
关于我正在尝试做的事情的额外背景:
我有一个请求表/实体,每个请求都有一个字段指定与请求相关的内部资源,我们称之为target_id。我想查找所有超过 1 个月的请求,但仅限于同一 target_id 上没有超过 1 个月的其他请求。
编辑:
实际上,更多地考虑这一点,我什至不确定 MINUS 运算符是否完全符合我的要求。我可以写类似的东西
SELECT * from request WHERE request.updated_at < :deadline MINUS SELECT * from request WHERE request.updated_at > :deadline,但问题是它总是只返回第一个 SELECT 的结果,因为两个结果集之间永远不会有任何确切的重叠。缺少的是一种比较两个结果集并找到共享 target_id 的结果集并从第一个集中删除与第二个集中的任何结果共享 target_id 的结果的方法。我认为可能有某种方法可以通过某种 JOIN 来做到这一点,但这超出了我使用 SQL 的能力。非常感谢这里的任何指导!
【问题讨论】:
-
请阅读此内容并编辑您的问题以包含一个具体示例:Why should I provide a Minimal Reproducible Example for a very simple SQL query?
-
或许
WHERE request.updated_at < :deadline AND target_id NOT IN (SELECT target_id from request WHERE requeted.updated_at > :deadline) -
做到了!谢谢@DemiPixel!!!
-
@DemiPixel,如果您将您的评论添加为问题的正确答案,我将接受它作为答案并关闭此问题。这样你就可以得到充分的帮助!