mysql - 子查询的替代优化查询

标签 mysql sql

select * from solar_park where solar_park_uid 
in 
(select distinct solar_park from solar_park_pooling_station where pooling_station 
in
(select distinct pooling_station_uid FROM solar_inverter where solar_generator_uid in (:solarGeneratorUid));

我正在使用此查询,但由于某些原因我想更改此查询的帮助

最佳答案

另一种方法是将查询重写为相关子查询,如下所示。

select *
from solar_park sp
where exists (
                select 1 -- * can also be used
                from solar_park_pooling_station spps
                where exists (
                            select 1 -- * can also be used
                            from solar_inverter si
                            where spps.pooling_station = si.pooling_station_uid
                            and sp.solar_park_uid = spps.solar_park
                            and solar_generator_uid IN (:solarGeneratorUid)
                            )
              );

您可以查看教程: Exists and Not Exists sub-queries in MySQL

希望这会有所帮助。

关于mysql - 子查询的替代优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299448/

相关文章:

php - json_encode 在开发服务器和实时服务器上的行为不同

mysql - 为规范化 3NF 分解表格

mysql - 如何根据一年中的某个时期显示日期?

mysql 对 like 的否定没有返回预期的结果,为什么?

mysql - 获取列的失败百分比

php - 根据特定的列值选择所有相同的列php pdo mysql

php - MySQL 和 date() 查询

sql - mysql索引太多?

mysql - 将以分钟为单位的数字 INT 转换为 MySQL 中的 TIME

php - 如何更新mysql中的表单选择2行值