如何用MariaDB查询未领取指定课程教材的学生ID
找出未领取指定教材的学生ID查询方法
你可以通过以下几种MariaDB查询语句,直接列出目标课程中未领取指定教材的学生ID:
方法1:使用NOT IN
SELECT `Student-ID` FROM `AllRosters2324` WHERE `Teacher` = 'TeacherName' AND `Period` IN (2,6) AND `Student-ID` NOT IN ( SELECT `Patron Barcode` FROM `textBooks` WHERE `Title` = "TextBookTitle" );
方法2:使用LEFT JOIN + IS NULL(推荐大数据量场景)
这种方式性能更稳定,且能避免NOT IN遇到空值时的异常:
SELECT a.`Student-ID` FROM `AllRosters2324` a LEFT JOIN `textBooks` t ON a.`Student-ID` = t.`Patron Barcode` AND t.`Title` = "TextBookTitle" WHERE a.`Teacher` = 'TeacherName' AND a.`Period` IN (2,6) AND t.`Patron Barcode` IS NULL;
方法3:使用NOT EXISTS
逻辑清晰,执行效率也较好:
SELECT `Student-ID` FROM `AllRosters2324` a WHERE `Teacher` = 'TeacherName' AND `Period` IN (2,6) AND NOT EXISTS ( SELECT 1 FROM `textBooks` t WHERE t.`Patron Barcode` = a.`Student-ID` AND t.`Title` = "TextBookTitle" );
以上三种方法都能准确筛选出那9名未领取指定教材的学生ID,可根据数据量选择合适的语句。
内容的提问来源于stack exchange,提问作者Steve Gutierrez
相关产品推荐
相关产品推荐

