sou*_*ami 7 sql postgresql select count min
假设我有一些Table_A:
A_id | A_val
1      a
2      b
3      c
一些表_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中链接最少的项目的项目.我目前是使用PostgreSQL的SQL初学者,并认为它可能与使用子查询有关.我设法使用以下方法计算链接:
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_id1 和 4 各只有 1 个链接)。