SQL:如何查找从一个表链接到另一个表的最小条目数

假设我有一些Table_A:
A_id | A_val
1      a
2      b
3      c

一些Table_B:

B_id | B_val
1      d
2      e
3      g

链接器Table_C:

A_id | B_id
1      1
2      1
2      2
3      1
3      2
3      3

我需要帮助尝试找到表A中与表B中链接最少的项目的项目.我目前是使用Postgresqlsql的初学者,并认为它可能与使用子查询有关.我设法使用以下方法计算链接

SELECT A_id,COUNT(B_id) as Num_links
  FROM TABLE_C
  GROUP BY A_id;

但我不知道从哪里开始.

解决方法

您可以使用with子句为“count”查询提供别名,并将其视为临时表.然后选择a_id,其num_links小于或等于num_links中的最低计数.
WITH link_counts AS (
         SELECT a_id,COUNT(b_id) as num_links
           FROM table_c
       GROUP BY a_id
     )
SELECT a_id
  FROM link_counts
 WHERE num_links <= (SELECT MIN(num_links) FROM link_counts)

请注意,如果不同的a_id具有相同(最低)的链接数,则可能会返回多行(例如,如果a_id 1和4都只有1个链接).

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03