【问题标题】:Return COUNT from a sub query in the field list of a SELECT statement从 SELECT 语句的字段列表中的子查询返回 COUNT
【发布时间】:2019-07-10 07:01:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

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

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

    【讨论】:

    • 是否有区别,至少在您的解决方案和 b.Muthamizhselvi 的解决方案的性能上?他将 COUNT 放在 SELECT 之外,而您的放在里面。
    • 在这样的查询之外使用 count 在语法上是错误的。
    • 我遇到了这个与你的解决方案类似的解决方案,尽管适用于 MySql(不确定它是否适用于 Sqlite):stackoverflow.com/questions/1973246/…
    • 它确实适用于 sqlite,因为它是标准 sql。这与我使用 select count(*) 作为嵌入式查询的方式相同。
    • @forpas,现在为什么要编辑答案?您错误地发布为 userId =
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 2015-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多