选择查询以分组项目但也限制

时间:2014-07-02 22:27:37

标签: mysql sql

我正在运行这个SQL查询:

SELECT * FROM customer_billing a WHERE 

(SELECT COUNT(*) FROM customer_billing b WHERE 
 a.producttype = 'VoIP Telephony' and 
 a.productname = 'VoIP Geographic Number (01/02)' and 
 a.customer_seq = b.customer_seq) 
 <= 1 order by customer_seq ASC

它应该只显示producttype = 'VoIP Telephony'但显示其他两个

的行

其中producttype ='电话线'和更多

2 个答案:

答案 0 :(得分:1)

我认为你正在尝试这样做:

SELECT *
FROM customer_billing cb
WHERE cb.producttype = 'VoIP Telephony' and 
      cb.productname = 'VoIP Geographic Number (01/02)' and
      (SELECT COUNT(*)
       FROM customer_billing cb2 
       WHERE cb2.producttype = cb.producttype and 
             cb2.productname = cb.productname and
             cb2.customer_seq = cb.customer_seq
     ) <= 1
order by customer_seq ASC;

您的查询版本正在对子查询中的进行比较。因此,它们仅适用于count(*),而不适用于整个查询的过滤。

答案 1 :(得分:0)

您正在做的是选择表格中只有1行符合producttypeproductname的客户。但客户可以拥有更多的产品线。

一个解决方案就是在&#34;外部&#34;上重复这两个条件。 SELECT

SELECT *
  FROM customer_billing a
  WHERE 
  (
    SELECT COUNT(*)
      FROM customer_billing b
      WHERE 
        a.producttype = 'VoIP Telephony' AND 
        a.productname = 'VoIP Geographic Number (01/02)' AND
        a.customer_seq = b.customer_seq
  ) <= 1 AND 
  a.producttype = 'VoIP Telephony' AND
  a.productname = 'VoIP Geographic Number (01/02)'
  ORDERY BY customer_seq ASC