计算MySQL中多个表中的匹配值

时间:2011-08-16 18:55:52

标签: mysql count

我有6个供应商“库存”数据库,我已与主数据库匹配/不匹配。如果在主数据库中找到了唯一ID,我们会在我们创建的名为Status的列中添加“匹配”一词。如果主服务器没有匹配的唯一ID,我们会在“状态”列中显示“无匹配”。我们已为每个供应商库存数据库执行此操作。我想保持一个“匹配”和“不匹配”的唯一ID数量的运行计数,以便快速浏览。

例如:

结合所有6个库存数据库的结果:
          库存总数:20000            '匹配'总数:14000           '不匹配'总数:6000

3 个答案:

答案 0 :(得分:0)

这可能不是最好的方式,也不是经过测试,但这就是我想出来的。


SELECT SUM(1) AS inventory_total, 
   SUM(CASE status WHEN 'Match' THEN 1 ELSE 0 END) AS match_total,
   SUM(CASE status WHEN 'No Match' THEN 1 ELSE 0 END) AS no_match_total
FROM tbl
WHERE tbl_id IN (
    SELECT MAX(tbl_id)
    FROM tbl
    GROUP BY fkey_id
);

我不完全确定这是不是你想要的,但我希望它有所帮助。

答案 1 :(得分:0)

这会有用吗?

SELECT 
    COUNT(*) AS InventoryTotal,
    SUM(CASE WHEN STATUS = 'Match' THEN 1 ELSE 0 END) AS MatchTotal,
    SUM(CASE WHEN STATUS = 'No Match' THEN 1 ELSE 0 END) AS NoMatchTotal
FROM
    Table

答案 2 :(得分:0)

SELECT COUNT(*) as [inventory total],
    SUM(CASE status WHEN 'Match' THEN 1 ELSE 0 END) AS [match total]
    SUM(CASE status WHEN 'No Match' THEN 1 ELSE 0 END) AS [no match total]
FROM db1.table UNION ALL db2.table UNION ALL db3.table
               UNION ALL db4.table UNION ALL db5.table UNION ALL db6.table

如果我理解正确的话......