如何使用 Sequelize 查询两列是否相等?
How do I query for two columns to be equal using Sequelize?
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
?
您可以通过 sequelize.where()
:
db.WorkbookQuestion.count({
where: sequelize.where(
db.sequelize.col('CorrectAnswerId'),
db.sequelize.col('AnswerSelectedId')
)
});
今天我在这个问题上卡住了一段时间,直到找到这个答案。我还找到了执行相同查询的另一种方法,因此将在此处留下另一个答案。
db.WorkbookQuestion.count({
where: {
CorrectAnswerId: {
$col: 'AnswerSelectedId'
}
}
});
更新:另一种使用sequelize中的Operators(Op)编写代码的方法。
const { Op } = require('sequelize');
db.WorkbookQuestion.count({
where: {
QuestionId: dbQuestion.id,
CorrectAnswerId: {
[Op.eq]: sequelize.col('AnswerSelectedId')
}
}
});
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
?
您可以通过 sequelize.where()
:
db.WorkbookQuestion.count({
where: sequelize.where(
db.sequelize.col('CorrectAnswerId'),
db.sequelize.col('AnswerSelectedId')
)
});
今天我在这个问题上卡住了一段时间,直到找到这个答案。我还找到了执行相同查询的另一种方法,因此将在此处留下另一个答案。
db.WorkbookQuestion.count({
where: {
CorrectAnswerId: {
$col: 'AnswerSelectedId'
}
}
});
更新:另一种使用sequelize中的Operators(Op)编写代码的方法。
const { Op } = require('sequelize');
db.WorkbookQuestion.count({
where: {
QuestionId: dbQuestion.id,
CorrectAnswerId: {
[Op.eq]: sequelize.col('AnswerSelectedId')
}
}
});