我无法提出一个查询来查找同时购买了 PROD1 和 PROD2 的所有客户。
这是一个伪查询,看起来像我想要做的:(显然这是行不通的)
SELECT COUNT(DISTINCT userid)
FROM TRANSACTIONS
WHERE product_id = 'prod1'
AND product_id = 'prod2'
所以基本上我试图获取在其中进行交易的不同用户 ID 的数量transactions
两个product_id '的表prod1
' and 'prod2
'。每笔交易都存储在一行中transactions
table.
我通过以下方式执行此类查询:
SELECT COUNT(DISTINCT t1.userid) AS user_count
FROM TRANSACTIONS t1
JOIN TRANSACTIONS t2 USING (userid)
WHERE t1.product_id = 'prod1'
AND t2.product_id = 'prod2';
The GROUP BY
解决方案shownby @najmeddine 也能产生你想要的答案,但它在 MySQL 上的表现不佳。 MySQL 很难优化GROUP BY
查询。
您应该尝试这两个查询,分析优化情况EXPLAIN,并根据数据库中的数据量运行一些测试并对结果进行计时。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)