我要在商店表中过滤至少出现1次且至少出现X次的条形码。
表结构
表代码(现在有1.000条记录):
code (PK)
ABC
XYZ
表格条形码(现在有6.000条记录):
barcode (PK) code
ABC 123
ABC 456
XYZ 789
表存储(现在有67.000条记录):
id (PK) barcode
1 123
2 123
3 123
4 789
如何加快查询速度?
SELECT c.code,
IFNULL(
(SELECT COUNT(*) count FROM store s INNER JOIN barcode b ON s.barcode=b.barcode WHERE b.code=c.code GROUP BY a.barcode ORDER BY count DESC LIMIT 1
),0) max
FROM codes c
GROUP BY c.code";
HAVING max>=X
x = 2的预期结果是:
code max
ABC 3
因为只有代码ABC至少有1条条形码(123)在商店表中至少出现2次。