MySQL实验查询学生读者中目前没有借书的读者编号、姓名。编程要求 希望用相关子查询(语句1)和不相关子查询(语句2)两种方法查询学生读者中目前没有借书的读者编号、姓名。
时间: 2024-10-24 08:18:25 浏览: 33
数据库系统及原理及MYSQL应用教程多表连接和子查询实验报告
首先,我们需要假设我们有一个名为`students_readers`的学生读者表,其中包含字段`reader_id`(读者编号)、`reader_name`(姓名)以及`borrowed_books`(已借书籍列表)。为了找到没有借书的读者,我们可以使用两个不同的SQL查询方法:
**相关子查询(语句1)**:
```sql
SELECT reader_id, reader_name
FROM students_readers
WHERE reader_id NOT IN (
SELECT reader_id FROM borrowed_books
)
```
在这个查询中,外部子查询找出`borrowed_books`表中存在的所有读者ID,然后主查询从`students_readers`表中排除这些ID,得到没有借书的读者。
**不相关子查询(语句2)**:
```sql
SELECT sr.reader_id, sr.reader_name
FROM students_readers sr
LEFT JOIN borrowed_books bb ON sr.reader_id = bb.reader_id
WHERE bb.reader_id IS NULL
```
这里通过左连接(LEFT JOIN)将`students_readers`表与`borrowed_books`表相连,如果读者在`borrowed_books`表中没有对应的记录(即`bb.reader_id`为空),则该读者没有借过书。
阅读全文