【发布时间】:2016-08-09 10:08:37
【问题描述】:
我的 mysql 数据库服务和关系中有两个表我只需要计算关系表中有多少服务,所以我正在尝试这样做
我的桌子:
- 关系- |关系ID | parent_id |
- 服务- |服务标识 |蛞蝓标题 |标题 |
代码:
SELECT
services.slug_title,
services.title,
COUNT(relationships.parent_id) AS num_companies
FROM
services
LEFT JOIN
relationships ON services.service_id = relationships.parent_id
GROUP BY
services.service_id
ORDER BY
services.title ASC
我还有一个问题
SELECT
services.slug_title,
services.title,
COALESCE(companies, 0) AS num_companies
FROM
services
LEFT JOIN
(SELECT
parent_id, COUNT(*) AS companies
FROM
relationships
GROUP BY
parent_id) relationships ON services.service_id = relationships.parent_id
ORDER BY
services.title ASC
两个查询都返回相同的结果,并且按照我的需要工作,但哪个更好或更适合以更好的性能方式使用?
【问题讨论】:
-
我会选择第一个,避免你在第二个中使用的内联视图(“关系”)
-
请注意,查询 1 的 GROUP BY 无效,不会在较新的 MySQL 版本上执行。
-
你能解释一下原因吗?