【问题标题】:How do I query for two columns to be equal using Sequelize?如何使用 Sequelize 查询两列是否相等?
【发布时间】:2016-06-10 11:14:09
【问题描述】:
db.WorkbookQuestion.count({
  where: {
    QuestionId: dbQuestion.id,
    AnswerSelectedId: db.sequelize.col('CorrectAnswerId')
  }
});

查询生成这条 SQL:SELECT count(*) AS "count" FROM "WorkbookQuestions" AS "WorkbookQuestion" WHERE "WorkbookQuestion"."QuestionId" = 1103 AND "CorrectAnswerId";

如何让它更像AnswerSelectedId = CorrectAnswerId

【问题讨论】:

    标签: postgresql sequelize.js


    【解决方案1】:

    您可以通过sequelize.where()

    db.WorkbookQuestion.count({
      where: sequelize.where(
        db.sequelize.col('CorrectAnswerId'),
        db.sequelize.col('AnswerSelectedId')
      )
    });
    

    【讨论】:

    • 如果我想要多个子句怎么办?
    • @Shamoon 您是否尝试将条件放入数组中?比如:where: [sequelize.where(..), sequelize.where(..)]。未测试 - 如果这不起作用,将实际进行试验。谢谢。
    • 使用where: [sequelize.where(..), sequelize.where(..)] 会导致sql.replace is not a function 错误。
    【解决方案2】:

    我今天被困在这个问题上一段时间,直到我找到了这个答案。我还找到了执行相同查询的另一种方法,因此将在此处留下另一个答案。

    db.WorkbookQuestion.count({
      where: {
        CorrectAnswerId: {
            $col: 'AnswerSelectedId'
        }
      }
    });
    

    【讨论】:

      【解决方案3】:

      更新:

      const { Op } = require('sequelize');
      
      db.WorkbookQuestion.count({
        where: {
          QuestionId: dbQuestion.id,
          CorrectAnswerId: {
              [Op.eq]: sequelize.col('AnswerSelectedId')
          }
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-22
        • 2012-01-10
        • 2011-10-01
        • 2015-05-28
        • 2019-11-04
        • 1970-01-01
        • 2017-10-21
        • 2021-09-28
        相关资源
        最近更新 更多