Sql 从SELECT语句的字段列表中的子查询返回计数

Sql 从SELECT语句的字段列表中的子查询返回计数,sql,sqlite,Sql,Sqlite,运行以下查询时,我希望包含一个字段,该字段返回子查询中记录数的计数。但是,子查询有一个WHERE子句,其中该子句中的字段必须与父查询的SELECT语句中的字段匹配: SELECT id, firstName, lastName, COUNT( SELECT userId, address FROM UserDetails WHERE userId = <id_from_outer_select_statement> ) FROM Users 我不清楚如何将外部SELECT语

运行以下查询时,我希望包含一个字段,该字段返回子查询中记录数的计数。但是,子查询有一个WHERE子句,其中该子句中的字段必须与父查询的SELECT语句中的字段匹配:

SELECT id, firstName, lastName, 
COUNT(
   SELECT userId, address FROM UserDetails WHERE userId = <id_from_outer_select_statement>
)
FROM Users

我不清楚如何将外部SELECT语句中的id字段应用于子查询。

为表用户提供一个别名,并使用它来限定子查询中的列id:

SELECT u.id, u.firstName, u.lastName, 
  (SELECT COUNT(*) FROM UserDetails WHERE userId = u.id) counter
FROM Users u

为表用户提供别名,并使用它限定子查询中的列id:

SELECT u.id, u.firstName, u.lastName, 
  (SELECT COUNT(*) FROM UserDetails WHERE userId = u.id) counter
FROM Users u

您的解决方案与b.Muthamizhselvi的解决方案在性能上是否有差异?他将计数放在SELECT之外,而您的计数在SELECT之内。在这样的查询之外使用计数在语法上是错误的。我遇到了与您的类似的解决方案,尽管对于MySql不确定它是否适用于Sqlite:它确实适用于Sqlite,因为它是标准sql。这与我使用select count*作为嵌入式查询的方式相同。@forpas,现在说说为什么要编辑答案?。您错误地发布为userId=您的解决方案与b.Muthamizhselvi的解决方案在性能上是否存在差异?他将计数放在SELECT之外,而您的计数在SELECT之内。在这样的查询之外使用计数在语法上是错误的。我遇到了与您的类似的解决方案,尽管对于MySql不确定它是否适用于Sqlite:它确实适用于Sqlite,因为它是标准sql。这与我使用select count*作为嵌入式查询的方式相同。@forpas,现在说说为什么要编辑答案?。您错误地发布了userId=