Mysql 需要帮助将子查询转换为JOIN的吗
有人能帮我把这个基于子查询的查询转换成JOIN的吗Mysql 需要帮助将子查询转换为JOIN的吗,mysql,sql,join,subquery,Mysql,Sql,Join,Subquery,有人能帮我把这个基于子查询的查询转换成JOIN的吗 SELECT DISTINCT brm_products_assets_id, (select brm_products_assets_value from brm_products_assets_values where brm_products_assets_id=a.brm_products_assets_id and brm_products_assets_def_id=1) as prod_asset_name, (select br
SELECT DISTINCT brm_products_assets_id,
(select brm_products_assets_value from brm_products_assets_values where brm_products_assets_id=a.brm_products_assets_id and brm_products_assets_def_id=1) as prod_asset_name,
(select brm_products_assets_value from brm_products_assets_values where brm_products_assets_id=a.brm_products_assets_id and brm_products_assets_def_id=3) as prod_asset_desc,
(select brm_products_assets_value from brm_products_assets_values where brm_products_assets_id=a.brm_products_assets_id and brm_products_assets_def_id=2) as prod_asset_type,
ifnull((select brm_products_assets_value from brm_products_assets_values where brm_products_assets_id=a.brm_products_assets_id and brm_products_assets_def_id=5),'') as file_order
from brm_products_assets a where last_mnt_option!='d';
此查询当前执行时间超过20秒。我尝试了一个有关brm_产品、资产和价值的指数,但没有帮助
谢谢 您希望执行条件聚合,而不是单独的查询:
SELECT brm_products_assets_id,
max(case when brm_products_assets_def_id = 1 then brm_products_assets_value
end) as prod_asset_name,
max(case when brm_products_assets_def_id = 2 then brm_products_assets_value
end) as prod_asset_desc,
max(case when brm_products_assets_def_id = 3 then brm_products_assets_value
end) as prod_asset_type,
max(case when brm_products_assets_def_id = 5 then brm_products_assets_value else ''
end) as file_order
from brm_products_assets a join
brm_products_assets_values b
on b.brm_products_assets_id = a.brm_products_assets_id
where last_mnt_option <> 'd'
group by a.brm_products_assets_id;