首页 > 解决方案 > MySQL左连接左表或右表有条件

问题描述

我有以下查询:

select distinct places.*
from places
left join place_address on place_address.place_id = places.id 
left join addresses on place_address.address_id = addresses.id
left join cities on addresses.city_id = cities.id
where 
(places.description like '%Boston%' or cities.name = 'Boston')
and places.status = 1
order by places.name

它返回正确的结果,但运行速度很慢。如果我从“左加入”切换到“加入”,它会运行得很快,但如果没有关联的地址,则不会返回“places.description”匹配的结果。有没有办法构建它以获得我想要的结果并让它快速运行?

places Table
- id
- name
- description
- status

place_address Table
- place_id
- address_id

addresses Table
- id
- city_id

cities Table
- id
- name

我已经看到关于左连接的类似问题,他们建议将 WHERE 子句的部分移动到“ON”条件,但这似乎不适用于最左边和最右边的表的“OR”条件。

标签: mysql

解决方案


推荐阅读