mysql - 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”条件。
解决方案
推荐阅读
- c++ - 如何通过 C++ 中的函数返回初始化静态类变量?
- python - 如何处理 IndentationError: 非空白引起的意外缩进?
- python - 从 docker 中的 pipfile.lock 安装时出错
- java - 如何从文本文件读入对象数组
- javascript - React-redux 组件在来自 reducer 的异步 saga 调用后更新状态属性
- appium - 在 appium java client 7.0.0 中是 driver.pressKeyCode(AndroidKeyCode.HOME); 已弃用,要改用什么?
- windows - 脚本在特定行后关闭,'composer install'
- azure - 如何在不同环境中仅部署 ADF 的增量更改?
- android - 错误:无法解析“:app@debugAndroidTest/compileClasspath”的依赖关系:无法解析junit:junit:4.12
- graphql - 在 Strapi 中限制属于所有者的 Graphql 结果