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/