mysql - 使用 Sequelize include 子句查询另一个表中没有条目的记录

标签 mysql orm sequelize.js

给定用户表和评级表

如何从用户表中查询评分表中没有任何评分记录的所有用户记录使用 Sequelize include 子句

注意:Sequelize 版本 5.x

提前致谢

最佳答案

您可以通过两种方式执行此操作,具体取决于模型的定义方式。

1. 使用 Sequelize Eager Loading 获取所有用户以及评分 。然后过滤用户没有任何评分的地方。

const users = Users.findAll({
  include: [Ratings]
});
const filteredUsers = users.filter(user => user.ratings.length === 0);

2.Ratings 表中获取所有 userIds,然后使用以下命令将这些 userIds 传递到 where 子句notIn Sequelize operator

const ratings = Ratings.findAll({
  attributes: ["userId"],
  group: ["userId"]
});
const userIds = ratings.map(rating => rating.userId);
const filteredUsers = Users.findAll({
  where: {
    userId: { [Op.notIn]: userIds }
  }
});

关于mysql - 使用 Sequelize include 子句查询另一个表中没有条目的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58887296/

相关文章:

java - hibernate 条件 : NOW() < date + 1 day

mysql - Docker-Compose - 无法使用命令 --init-file 初始化 MySQL 数据库

php - 更改列 mysql 查询时出错

symfony - 多引用 fixture 范围@user {1..10}

java - Hibernate:@ManyToMany 关系中对象集的传递持久性

node.js - 尝试定义模型时,NodeJS Sequelize 抛出错误

javascript - 在 Sequelize 中使用具有多对多关系的 AND 操作

MySQL - 联合和排序/排序行

ruby - ObjectMapper : Find geo places within a certain square, 按邻近度排序

graphql - 从 GraphQL 到 Teradata 的数据库连接器