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

前端之家收集整理的这篇文章主要介绍了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个链接).

猜你在找的MsSQL相关文章