我需要计算出两个表之间的匹配数。
目前,我正在使用此查询,它会生成找到匹配项的次数。
SELECT count(*) FROM products WHERE EXISTS (SELECT 1 FROM inventory WHERE products.products_id = inventory.product_id) AND products.orders_id = 'xxx'
如果有 5 个产品,其中 3 个可以在另一个表中找到 - 它返回“3.
我需要能够知道总共有多少行以及其中有多少行是匹配的——比如找到了 3/5。我该怎么做?
最佳答案
如果产品在库存中是唯一的,那么“正常”方式是:
SELECT count(*) as total, count(i.product_id) as matches
FROM products p LEFT JOIN
inventory i
ON p.products_id = i.product_id
WHERE p.orders_id = 'xxx';
如果inventory
可以有重复项,那么一个简单的方法是:
SELECT count(distinct p.product_id) as total, count(i.product_id) as matches
FROM products p LEFT JOIN
inventory i
ON p.products_id = i.product_id
WHERE p.orders_id = 'xxx';
编辑:
如果您需要考虑数量:
SUM(CASE WHEN i.qty > 0 THEN 1 ELSE 0 END)
关于php - MySQL - 从两个表中查找有多少匹配项(如找到 6/9),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47094534/