我在 MySQL (5.5.60-MariaDB) 中有一个数据库。
我正在做一个SELECT查询以从一个名为的表中获取行,revision_filters然后是各种INNER JOIN's 以获取相关数据。查询如下所示并正确执行:
SELECT RevisionFilters.id AS `RevisionFilters__id`,
RevisionFilters.date AS `RevisionFilters__date`,
RevisionFilters.comment AS `RevisionFilters__comment`,
filters.label AS `Filters__label`,
filters.anchor AS `Filters__anchor`,
groups.label AS `Groups__label`
FROM revision_filters RevisionFilters
INNER JOIN dev_hub_subdb.filters Filters
ON filters.id = ( RevisionFilters.filter_id )
INNER JOIN dev_hub_subdb.groups Groups
ON groups.id = ( filters.group_id )
INNER JOIN dev_hub_subdb.regulations Regulations
ON regulations.id = ( groups.regulation_id )
有一个表叫revision_filters_substances. 表的结构如下。在这种情况下revision_filter_id,是一个与 相关的外键revision_filters.id。
mysql> describe revision_filters_substances;
+--------------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-----------------------+------+-----+---------+----------------+
| id | mediumint(8) unsigned | NO | PRI | NULL | auto_increment |
| revision_filter_id | mediumint(8) unsigned | NO | MUL | NULL | |
| substance_id | mediumint(8) unsigned | NO | MUL | NULL | |
+--------------------+-----------------------+------+-----+---------+----------------+
我想要做的是调整我的SELECT查询,以便在返回的每一行上,我可以获得与查询中的COUNT行revision_filters_substances相对应的行数。SELECTrevision_filters
在某些情况下,可能没有revision_filters_substances对应于特定的行revision_filters.id,在这种情况下,我需要计数返回 0。
我已阅读https://dba.stackexchange.com/questions/133384/counting-rows-from-a-subquery
但我看不出如何使它适应我的查询。
它在链接的文章上说
子查询应紧跟 FROM 关键字。
FROM revision_filters RevisionFilters所以我已经尝试在我已经完成的查询之后立即执行此操作:
, (SELECT COUNT(id) FROM revision_filters_substances WHERE id = revision_filters.id) AS count_substances
但是这个错误:
“where 子句”中的未知列“revision_filters.id”
请有人建议这是否可能?如果也没有相应的行,我也看不到如何指定 0,因此还需要有关如何实现这一点的建议。