gpt4 book ai didi

mysql - Sequelize 等效范围

转载 作者:行者123 更新时间:2023-11-29 15:41:29 25 4
gpt4 key购买 nike

我想删除日期晚于今天 - 7 且状态类似于“已取消”的行。

如何为该原始查询创建等效的 Sequelize 范围:

SELECT `st_shipment_header`.`id`, 
FROM `st_shipment_header` AS `st_shipment_header`
LEFT OUTER JOIN `st_shipment_event` AS `st_shipment_events` ON `st_shipment_header`.`id` = `st_shipment_events`.`stShipmentHeaderId`
WHERE (`st_shipment_header`.`id`
NOT IN
( SELECT `st_shipment_header`.`id` FROM `st_shipment_header` AS `st_shipment_header`
LEFT OUTER JOIN `st_shipment_event` AS `st_shipment_events` ON `st_shipment_header`.`id` = `st_shipment_events`.`stShipmentHeaderId`
WHERE (`st_shipment_events`.`date` < NOW() - INTERVAL 7 DAY ) AND (`st_shipment_header`.`shipmentStatus` LIKE 'Canceled%'))));

我已尝试将此作为 Sequelize 范围:

StShipmentHeader.addScope('test', {
include: [
{ model: models.st_shipment_event }
],
where: {
[Op.notIn]: {
[Op.and]: {
'models.st_shipment_event.date': {
[Op.lt]: new Date().setDate(new Date().getDate() - 7)
},
shipmentStatus: {
[Op.like]: '%Canceled%'
}
}
}
}
})

但看起来[Op.notIn]不起作用...

最佳答案

我最终通过创建不同的 SQL 查询(没有 NOT IN)解决了这个问题。

    SELECT 
`st_shipment_header`.`id`
FROM
`st_shipment_header`
LEFT OUTER JOIN
`st_shipment_event` AS `st_shipment_events` ON `st_shipment_header`.`id` = `st_shipment_events`.`stShipmentHeaderId`
WHERE
((`st_shipment_header`.`shipmentStatus` LIKE 'Canceled%'
AND `st_shipment_events`.`date` > NOW() - INTERVAL 7 DAY)
OR `st_shipment_header`.`shipmentStatus` NOT LIKE 'Canceled%');

StShipmentHeader.addScope('test', {
include: [
models.st_shipment_event,
],
where: {
[Op.and]: {
[Op.or]: {
shipmentStatus: {
[Op.notLike]: 'Canceled%'
},
[Op.and]: {
shipmentStatus: {
[Op.like]: 'Canceled%'
},
'models.st_shipment_event': sequelize.where(
sequelize.col('st_shipment_events.date'),
{
[Op.gt]: sequelize.literal('NOW() - INTERVAL 7 DAY')
}
)
}
},
}
}
})

主要变化:

  • 使用sequelize.col来标识列,
  • 使用 sequelize.literal('NOW() - INTERVAL 7 DAY'),
  • 使用不同的 SQL 查询

关于mysql - Sequelize 等效范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com