这是一个非常基本的问题,但出于某种原因,我无法让自己放心。我有一个 sql 查询,我想确保它按预期运行。
question_records
enrollments
两者都有一个外键questions
SELECT `question_records`.* FROM `question_records`
INNER JOIN `enrollments` ON `enrollments`.`id` = `question_records`.`enrollment_id`
INNER JOIN `questions` ON `questions`.`id` = `question_records`.`question_id`
WHERE (enrollments.id IN (10,20)
AND questions.id IN (500,600)
AND question_records.id not in (3000,4000))
我要确保的是,我不会得到一个问题记录,例如,enrollment_id 为 11,question_id 为 500。换句话说,这个内部连接是否逐个记录地处理这个 where 子句?更重要的是,它总是这样对待它吗?(我可以想出一个测试示例,但要确保我没有遗漏任何案例。
编辑:为清楚起见的附加叙述:
question_record
数据库中可能存在 aenrollment_id
为 11 和 aquestion_id
为 500。如果此查询不是逐条记录搜索条件,它将匹配question_id
500 并返回记录。这不是我想要的行为。我只想要与给定记录匹配的记录。我得到的答案涵盖了这种情况。enrollment_id
question_id