我很难弄清楚如何编写一个查询,从一个表中选择与某些条件匹配的所有行,如果有与另一组条件匹配的数据,则使用另一个表中的数据扩展行。
表:书籍
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或类似的东西。现在我得到的是零行。有没有办法用一个查询来做到这一点?
答案 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行。我认为这很重要