从表中选择行,如果存在则从另一个表中选择其他数据

时间:2013-04-20 19:12:27

标签: mysql sql

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

表:书籍

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.name设置为null或类似的东西。现在我得到的是零行。有没有办法用一个查询来做到这一点?

1 个答案:

答案 0 :(得分: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行。我认为这很重要