除了查询以外遇到问题

问题描述:

我有两个表(书籍和借阅)。除了查询以外遇到问题

我想从表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)* 
+0

[在查询中使用除外时出现错误]的可能重复(http://*.com/questions/16092353/error-when-using-except-in-a-query) – Armfoot

select b1.* 
from Books b1 
left join Borrowed b2 on b1.bookid = b2.bookid 
        and b2.`Status` = 1 
where b2.bookid is null 

this great explanation of joins

+0

它说'列'状态'在on子句含糊不清“,这是什么意思? – kielou

+0

这意味着两个表都有一个“状态”列,并且数据库不知道要采取哪一个。我更新了查询并将表名添加到'status'列。 –

+0

@kielou我建议您阅读juergen提供的页面,然后直接查看[MySQL的'JOIN'文档](https://dev.mysql.com/doc/refman/5.0/en/join.html)。只有了解事情的运作方式,你才有可能在未来自己解决类似的问题。其实你的问题已经被问过了,[答案](http://*.com/a/16092507/1326147)也由'LEFT JOIN'组成,因为'EXCEPT'在MySQL中不存在。 – Armfoot