我有以下两个表

# vendor table
vendor_id     host
   1       192.168.0.2
   1       192.168.0.4
   1       192.168.0.6
   2       192.168.1.21
   2       192.168.1.23
   2       192.168.1.25
   2       192.168.1.27

# information table
    host        name
 192.168.0.2     bar
 192.168.0.4     bar1


我最后需要的是以下结果集

vendor_id amount_live amount_total
    1         2            3
    2         0            4


amount_live列是信息表中每个供应商的条目数,而amount_total列是每个供应商的供应商表中的主机数。

能不能请一些专家告诉我mysql select语句以获得所需的结果集。谢谢。

最佳答案

您可以使用countouter join执行此操作:

select v.vendor_id,
   count(i.host) amount_live,
   count(*) amount_total
from vendor v
    left join information i on v.host = i.host
group by v.vendor_id



SQL Fiddle Demo

关于mysql - mysql获取产品数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17834613/

10-16 06:04