以下用LEFT OUTER JOIN 和嵌套(NOT IN)两种方法来完成查询 (1)从来没有被借阅过的图书清单,结果显示图书名,作者。 (2)从来没有借过书的读者清单,结果显示读者姓名,读者单位。
时间: 2024-03-23 14:42:37 浏览: 59
(1)使用 `LEFT OUTER JOIN` 的方式:
```
SELECT bookName, author
FROM tb_book
LEFT OUTER JOIN tb_booklend ON tb_book.bookCode = tb_booklend.bookCode
WHERE tb_booklend.bookCode IS NULL;
```
使用 `NOT IN` 的方式:
```
SELECT bookName, author
FROM tb_book
WHERE bookCode NOT IN (SELECT bookCode FROM tb_booklend);
```
(2)使用 `LEFT OUTER JOIN` 的方式:
```
SELECT readerName, readerUnit
FROM tb_reader
LEFT OUTER JOIN tb_booklend ON tb_reader.readerId = tb_booklend.readerId
WHERE tb_booklend.readerId IS NULL;
```
使用 `NOT IN` 的方式:
```
SELECT readerName, readerUnit
FROM tb_reader
WHERE readerId NOT IN (SELECT readerId FROM tb_booklend);
```
这样就用 `LEFT OUTER JOIN` 和嵌套(`NOT IN`)两种方法分别完成了两个查询。
相关问题
left outer join和left join
left outer join和left join是SQL中用于查询多个表之间关联关系的操作。它们实现了从左表中选取所有记录,同时根据条件将右表中匹配的记录连接起来。
left join是一种连接操作,它返回左表中的所有记录,以及右表中与左表匹配的记录。如果右表中没有匹配的记录,那么结果集中对应的列将会显示为NULL。
left outer join也是一种连接操作,它也返回左表中的所有记录,以及右表中与左表匹配的记录。与left join不同的是,如果右表中没有匹配的记录,结果集中对应的列不会显示为NULL,而是显示为默认值或者空值。
简而言之,left join是left outer join的简称。
举个例子来说明:
假设我们有两个表:学生表(students)和成绩表(scores)。
学生表(students):
| 学生ID | 姓名 |
| ------ | ------ |
| 1 | 张三 |
| 2 | 李四 |
| 3 | 王五 |
| 4 | 赵六 |
成绩表(scores):
| 学生ID | 课程 | 成绩 |
| ------ | ------ | ---- |
| 1 | 数学 | 90 |
| 2 | 英语 | 85 |
| 3 | 数学 | 95 |
使用left join查询:
```
SELECT students.学生ID, students.姓名, scores.课程, scores.成绩
FROM students
LEFT JOIN scores ON students.学生ID = scores.学生ID;
```
查询结果:
| 学生ID | 姓名 | 课程 | 成绩 |
| ------ | ------ | ------ | ---- |
| 1 | 张三 | 数学 | 90 |
| 2 | 李四 | 英语 | 85 |
| 3 | 王五 | 数学 | 95 |
| 4 | 赵六 | NULL | NULL |
使用left outer join查询:
```
SELECT students.学生ID, students.姓名, scores.课程, scores.成绩
FROM students
LEFT OUTER JOIN scores ON students.学生ID = scores.学生ID;
```
查询结果与上面的结果相同。
总结来说,left join和left outer join都是用于查询多个表之间的关联关系,它们的区别在于对于右表中没有匹配记录的处理方式。
left outer join 和 left join
left outer join和left join的作用是一样的,都是用来连接两个表并返回左表中所有的记录以及右表中符合条件的记录。区别在于left outer join比left join多了一个outer,表示左表的所有记录都会被返回,而右表中没有符合条件的记录的地方将会填充为null值。因此,如果你想返回左表中所有的记录,不管右表中是否有符合条件的记录,那么可以使用left outer join。如果你只想返回左表中和右表中符合条件的记录,那么可以使用left join。
举个例子,假设有两个表A和B,A表中有5条记录,B表中有3条记录,其中2条记录和A表中的记录匹配,那么使用left outer join连接这两个表时,将会返回5条记录,其中3条记录的B表字段为null。而使用left join连接这两个表时,将会返回2条记录,其中B表字段不为null。
阅读全文