我是MySQL的新手,来自Mongo背景,所以我习惯使用Mongoose的.populate()方法来检索文档的关联作为子数组。有没有办法在MySQL中做到这一点?现在我正试图在一个查询中检索一个包含所有问题的测验。我有一个quizzes
表和一个questions
表,其中有一个parent_quiz_id
字段,用于引用测验ID。我已经尝试了SELECT * FROM quizzes JOIN questions ON questions.parent_quiz_id = quizzes.quiz_id WHERE quizzes.quiz_id = ?
的几种排列,但它们为我提供了每个问题的所有测验信息,这似乎效率低下。
有一种方法可以让单个查询一次检索测验信息,并在后续行中填充属于该测验的所有问题吗?
这就是我现在正在做的事情,有两个单独的查询:
connection.beginTransaction(function(err){ if(err){throw err; }
//First get the quiz data
connection.execute('SELECT * FROM quizzes WHERE quiz_id = ? LIMIT 1', [id], function (err, quiz_results) {
if (err) {
return connection.rollback(function() {
throw err;
});
}
const quiz = quiz_results[0];
if(!quiz){
return done({ message: "No quiz found with that id"}, false);
}
//Now get all of the quiz's questions
connection.execute('SELECT * FROM questions WHERE parent_quiz_id = ?', [id], function (err, question_results) {
if (err) {
return connection.rollback(function() {
throw err;
});
}
connection.commit(function(err) {
if (err) {
return connection.rollback(function() {
throw err;
});
}
quiz['questions'] = question_results;
return done(null, quiz);
});
});
});
});
但我宁愿不使用两个单独的查询。对于参考,我使用的是Node MySQL2