代码之家  ›  专栏  ›  技术社区  ›  JohnBigs

如何统计有记录限制的联接表的mysql记录?

  •  0
  • JohnBigs  · 技术社区  · 7 年前

    我有两个表,我想计算它们之间的连接记录:

    供应商和供应商地址

    每个供应商可以有非或多个地址,因此我想计算前5个供应商的地址数量。

    select count(*) from suppliers inner join supplier_addresses limit 5;
    

    但它不起作用,我在这里该怎么办?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Maksym Fedorov    7 年前

    您必须使用帮助分组语句按供应商分组地址,以便每个供应商正确计算。例如:

    SELECT 
       suppliers.id,
       count(*) 
    FROM suppliers 
    INNER JOIN supplier_addresses ON suppliers.id = supplier_addresses.supplier_id
    GROUP BY suppliers.id
    LIMIT 5;
    

    如果您想获得5家供应商的地址数量,可以使用子查询。例如:

    SELECT count(*)
    FROM supplier_addresses 
    WHERE supplier_id IN (
       SELECT id
       FROM suppliers
       LIMIT 5)
    

    SELECT count(*)
    FROM supplier_addresses 
    WHERE supplier_id IN (1,2,3,4,5)