除了查询以外遇到问题
我有两个表(书籍和借阅)。除了查询以外遇到问题
我想从表Books
中选择全部。 但首先它会检查BookID
是否存在于表Borrowed
中,如果它存在且其Status
= 1,它将不会被包含在select *语句中。
我都试过,但它不工作
select * from Books
except
select `BookdID` where `Status`=1
请帮助我。这是我的表
书籍:
| BookID | Title | Author |
|:-----------|------------:|:------------:|
| 1 | The Stars | William Evan |
| 2 | Science 3 | Vhong Navaro |
| 3 | Let It Burn | Jun Ryl |
| 4 | Sky Below | Jason Midfle |
| 5 | Wish It | Shan Uddle |
借:
| BookID | BorrowerID | Status |
|:-----------|------------:|:------------:|
| 6 | 12 | 0 |
| 5 | 4 | 0 |
| 2 | 3 | 1 |
| 18 | 6 | 1 |
| 5 | 3 | 0 |
我的目标输出:
| BookID | Title | Author |
|:-----------|------------:|:------------:|
| 1 | The Stars | William Evan |
| 3 | Let It Burn | Jun Ryl |
| 4 | Sky Below | Jason Midfle |
| 5 | Wish It | Shan Uddle |
*(BookID 2 is is not shown because in the table `Borrowed`, BookID 2's `Status` = 1)*
select b1.*
from Books b1
left join Borrowed b2 on b1.bookid = b2.bookid
and b2.`Status` = 1
where b2.bookid is null
它说'列'状态'在on子句含糊不清“,这是什么意思? – kielou
这意味着两个表都有一个“状态”列,并且数据库不知道要采取哪一个。我更新了查询并将表名添加到'status'列。 –
@kielou我建议您阅读juergen提供的页面,然后直接查看[MySQL的'JOIN'文档](https://dev.mysql.com/doc/refman/5.0/en/join.html)。只有了解事情的运作方式,你才有可能在未来自己解决类似的问题。其实你的问题已经被问过了,[答案](http://stackoverflow.com/a/16092507/1326147)也由'LEFT JOIN'组成,因为'EXCEPT'在MySQL中不存在。 – Armfoot
[在查询中使用除外时出现错误]的可能重复(http://stackoverflow.com/questions/16092353/error-when-using-except-in-a-query) – Armfoot