我正在运行这个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 ='电话线'和更多
答案 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行符合producttype
和productname
的客户。但客户可以拥有更多的产品线。
一个解决方案就是在&#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