首页 > 解决方案 > 是否可以在其他表中查询具有多个出现计数的行?

问题描述

我正在处理一个问题。我必须创建可以返回特定键出现次数的查询,让我们keyid在其他表中为我的表中的每一行调用它。

它必须看起来像这样:

SELECT 
    parameter1,
    parameter2,
    parameter3,
    parameter4,
    parameter5(count of keyid occurrences in specific table),
    parameter6(count of keyid occurrences in another specific table),
    parameter7(count of keyid occurrences in another specific table),
    parameter8(count of keyid occurrences in another specific table)

到目前为止,我已经做到了:

SELECT 
    keyid, name, section, address, updatedAt,
    (SELECT COUNT(library.keyid) AS storeCount 
     FROM library 
     LEFT JOIN store ON library.keyid = store.keyid 
     GROUP BY library.keyid) 
FROM 
    library

但我收到一个错误:

错误:用作表达式的子查询返回多行
SQL 状态:21000

因为子查询想要返回多行,其中包含keyid我从库中获取的一行的相同出现次数。关于如何解决这个问题的任何想法?

标签: sqlpostgresql

解决方案


大概,你想要一个相关的子查询:

SELECT keyid, name, section, address, updatedAt,
      (SELECT COUNT(*)
       FROM store s
       WHERE l.keyid = s.keyid
      ) AS storeCount
FROM library l;

请注意,这GROUP BY是不必要的。但是您真正的问题是您的查询不相关,因为library在子查询中重复。


推荐阅读