1

我很难弄清楚如何编写一个查询,该查询从一个表中选择与某些条件匹配的所有行,并在存在与另一组条件匹配的数据时使用另一个表中的数据扩展这些行。

表:书籍

id
school
isbn
name

表:订单

id
school
department
isbn
quantity

我的查询是:

SELECT orders.*, books.name FROM orders
LEFT JOIN books ON orders.isbn = books.isbn
WHERE orders.school = 1 AND orders.department = 2
      AND books.school = 1

现在,问题是,如果学校没有将他们的书籍、isbn 和名称添加到 books 表中,我仍然希望返回 orders.* 数据,并将 books.name 设置为 null 或类似的东西。现在我得到零行。有没有办法用一个查询来做到这一点?

4

1 回答 1

2

移动

and books.school = 1

从 where 子句到 from 子句。

left join books on orders.isbn = books.isbn 
and books.school = 1

编辑从这里开始

对于说没关系的raheel。使用我下载的 MySQL 附带的世界数据库,这个查询

select c.name, city.name cityname
from country c left join city on c.code = city.countrycode
AND city.name = 'toronto'
order by cityname;

返回 239 行。这个查询:

select c.name, city.name cityname
from country c left join city on c.code = city.countrycode
WHERE city.name = 'toronto'
order by cityname;

返回 1 行。我认为这很重要

于 2013-04-20T19:16:37.527 回答