mysql 基于其中一列内的值的查询模型

6l7fqoea  于 2023-02-03  发布在  Mysql
关注(0)|答案(3)|浏览(127)

我有一个名为staff的sequelize模型。其中一个staff列名为locations,它包含了该staff所在的所有位置的ID。我想创建一个使用Location ID的查询,以获取该位置的所有活动员工。我如何使用ORM来实现这一点?

hs1ihplo

hs1ihplo1#

假设我正确理解了您的问题,并且您的locations列包含CSV数据,那么您需要使用FIND_IN_SET()-

Staff.findAll({
    where: sequelize.where(sequelize.fn('FIND_IN_SET', locationId, sequelize.col('locations')), {[Op.gt]: 0})
})

一个更好的选择是规范化数据,因为此查询是不可SARGable的。

o4tp2gmn

o4tp2gmn2#

在Sequelize中,您可以使用查询中的include和where选项执行查询,根据员工的位置筛选员工。

const staff = await Staff.findAll({
  include: [
    {
      model: Location,
      as: 'locations',
      where: { id: locationId },
      through: { attributes: [] }
    }
  ]
});
syqv5f0l

syqv5f0l3#

常量findStaff =等待人员模型.findAll({其中:{位置ID:“您的位置ID”} })

相关问题