PrestaShop 1.7中NOT IN查询问题:仅筛选单一客户组客户
PrestaShop 1.7 筛选仅归属客户组2的SQL问题解决
你的SQL语句问题在于:它只是过滤掉了id_group为34、932的记录,但一个客户如果同时属于组2和其他组(比如34),他在ps_customer_group表中会有多条记录(一条对应组2,一条对应组34)。你的语句会把该客户对应组2的那条记录查出来,所以结果里依然包含这些同时归属多组的客户。
正确的SQL写法有两种:
方法1:分组聚合验证
通过分组统计每个客户的所属组数量,确保仅存在组2:
SELECT id_customer FROM ps_customer_group GROUP BY id_customer HAVING COUNT(DISTINCT id_group) = 1 AND MAX(id_group) = 2;
GROUP BY id_customer将同一个客户的所有组记录聚合到一起HAVING条件确保该客户只有1个唯一组,且这个组是2
方法2:子查询排除多组客户
先筛选出属于组2的客户,再排除那些同时属于34/932组的客户:
SELECT id_customer FROM ps_customer_group WHERE id_group = 2 AND id_customer NOT IN ( SELECT id_customer FROM ps_customer_group WHERE id_group IN (34, 932) );
- 内层子查询找出所有归属34或932组的客户ID
- 外层查询筛选出归属组2且不在子查询结果里的客户,也就是仅属于组2的客户
内容的提问来源于stack exchange,提问作者Pars3r0
相关产品推荐
相关产品推荐

