问题是要得到“尚未通过考试的学生”。在sql术语中,ims_admission.exam_status
不是 Active
的记录。
我有三张桌子。ims_admission、ims_batch、ims_course。
我在每个学生的记录中都存储了一个batch_id,course_id。这些id的是相应表的主键。使用这些id,我想从ims_batch中提取batch_name,从ims_course表中提取course_name,并且where子句是ims_admission.exam_status ='Active‘
我学了一点关于加入的知识。进行了查询,但在使用where子句时无法获得结果。除了我从哪里得到记录
这是我的查询
SELECT ims_admission.enq_applicant,ims_admission.batch_id,ims_admission.enq_course,ims_batch.batch_name
FROM ims_admission
INNER JOIN ims_batch ON ims_admission.batch_id = ims_batch.batch_id
WHERE NOT ims_admission.exam_status = 'Active'
我想得到批处理的名称,当然,其中不包括exam_status ="Active“
发布于 2019-09-06 16:50:13
虽然您可以使用LEFT JOIN
来实现这一点,但是我认为使用NOT EXISTS
来实现它更自然。
SELECT ia.*
FROM ims_admission ia
WHERE NOT EXISTS (SELECT 1
FROM ims_batch ib
WHERE ib.batch_id = ia.batch_id AND
ib.exam_status = 'Active'
);
https://stackoverflow.com/questions/57825897
复制相似问题