javascript - 如何获得2个mysql查询的交集?

标签 javascript mysql sequelize.js

假设我有一个如下所示的 MySQL 表:

enter image description here

表中的每个作业包含 3 个任务。

我怎样才能获得所有JobIdtaskA位于Done状态和taskB位于New状态?

就我而言,我想要一个返回 qwert 的查询,和zxcv .

我提出了这个查询:

select JobId from MyTable where TaskSeq=0 and TaskState='Done'
intersect
select JobId from MyTable where TaskSeq=1 and TaskState='New';

但是我的MySQL版本不支持intercept运算符。

我的最终目标是将查询写入 sequelize 。但我认为我应该首先了解 MySQL 查询,以便我可以创建 sequlize 查询。

而且我还希望序列化查询可以在 1 个函数中完成,而不是用 then 连接多个函数。 .

这是SQL Fiddle帮助您尝试该表。

最佳答案

您可以只使用联接:

select mt.JobId 
from   MyTable mt
         join MyTable mt2 on mt2.JobId = mt.JobId
where  mt.TaskSeq = 0 and mt.TaskState = 'Done' and mt2.TaskSeq = 1 and mt2.TaskState = 'New'

这是对该查询进行 Sequelize 的尝试,但这只是一个猜测。希望它能为您提供一些有用的东西:

MyTable.findAll({
    attributes: ['JobId', 'TaskSeq', 'TaskState'],
    include: [{
        model: MyTable,
        attributes: ['JobId', 'TaskSeq', 'TaskState'],
        where: { 
            JobId: Sequelize.col('MyTable.JobId'),
            TaskSeq: 1,
            TaskState: 'New'
        }
    }],
    where {
        TaskSeq: 0,
        TaskState: 'Done'
    }
});

关于javascript - 如何获得2个mysql查询的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46029882/

相关文章:

mysql - 从已选择的表中选择数据

php - 如何在php中获取特定的 session 路径?

meteor 、 Apollo 和 Sequelize : Cannot find module 'config.json'

javascript - 如何判断数组中是否只存在一项

javascript - 创建特定对象并从 SerializeArray 获取值的 Node.js 函数

javascript - RxJS 减少不会继续

php - MySQL - 删除一行,如何?

node.js - 如何以正确的方式处理 Sequelize 验证错误?

javascript - 无法使用sequelize-auto生成 typescript 模型

javascript - 让 instanceof 运算符与 JavaScript 中的多个父类(super class)一起使用