我可以结合这两个 SQL 语句吗?当前运行 2 个查询。试图收紧一点。
第一:
SELECT * FROM (`cars`)
JOIN `brands` ON `brands`.`br_id` = `cars`.`brand_id`
WHERE `cars`.`id` = '185707'
第二个:
SELECT ROUND(AVG(rating)) as avg_rating
FROM car_ratings WHERE car_id = 185707
您可以使用以下方法执行此操作group by
:
select cars.*,
brands.*,
round(avg(car_ratings.rating)) as avg_rating
from (cars
inner join brands on brands.br_id = cars.brand_id)
left join car_ratings on car_ratings.car_id = cars.id
where cars.id = 185707
group by cars.id
请注意,这是标准 SQL 的 MySQL 扩展;在标准 SQL 中,您需要列出group by
子句中的所有选定字段。
select *
, (select round(avg(rating)) from car_ratings
where car_id = cars.id) as avg_rating
from cars join brands on brands.br_id = cars.brand_id
where cars.id = 185707
但是,这是否代表改进是另一个问题,最好通过查看正在使用的查询计划来回答。