如何将mysql查询转换为续集?

时间:2018-07-20 15:53:35

标签: mysql sequelize.js

测试表

p_id   p_type   name
----------------------------------
100    Y        hong
101    Y        kim
200    N        park
201    N        John

我想在测试表中插入“ 102 Y choi”。

mysql查询

insert into test(p_id,p_type,name) 
select (max(p_id)+1),'Y','choi' from test where p_type='Y'

sequelize中的等效查询是什么?

1 个答案:

答案 0 :(得分:0)

除了在事务中进行两个查询外,我看不到其他任何选择:

sequelize.transaction(t => {
  Test.findAll({
    order: [['p_id', 'DESC']],
    where: { p_type: 'Y' },
    limit: 1
  }, {transaction: t}).then(maxTest=>{
    const max = (maxTest[0] || {p_id: 0}).p_id + 1;
    return Test.create({
        p_id: max,
        p_type: 'Y',
        name: 'choi'
    }, {transaction: t})
  })
})