MySQL:WHERE COUNT(*)= 0

时间:2014-06-03 09:13:30

标签: mysql

我正在尝试获取所有未找到任何行的customer_id,例如:

SELECT customer_id FROM transaction WHERE count(*) = '0'

我也试过这个:

SELECT customer_id, count(*) as total_rows FROM transaction WHERE total_rows='0'

但是我得到的错误是total_rows不是列。

1 个答案:

答案 0 :(得分:2)

最简单的方法是以一种不同的方式考虑它:"如何获得没有交易记录的所有客户的列表?"

简单!您将获得所有客户的列表,将其与其交易相关联,并过滤掉任何具有非空交易列表的客户。或者,在SQL中:

SELECT 
    customer.customer_id 
FROM customer
LEFT JOIN transaction
    ON transaction.customer_id = customer.customer_id
WHERE
    transaction.transaction_id IS NULL

请注意,您不能像我一样只使用transaction表。它不是customer_id的完整列表,而是仅包含订单客户的ID。

您必须找到所有客户,然后按没有交易的客户进行过滤,而不是在transaction上运营并找到没有交易的客户(您根本无法做到)。类似的概念,恰好相反。