【发布时间】:2016-11-09 01:02:25
【问题描述】:
我想查看特定时期内只在一家特定商店购物的顾客数量,所以我写了如下 SQL:
SELECT COUNT (DISTINCT CARD_NUMBER)
FROM <TRANSACTION TABLE>
WHERE DATE BETWEEN ‘XXXX-XX-XX’(DATE) AND ‘XXXX-XX-XX’(DATE)
AND STORE_NUMBER = 1234;
如果这些客户(持卡人)在其他连锁店购物怎么办?
我无法使用
AND CARD_NUMBER NOT IN…
因为我们的店太多了。
任何可以在这里使用的语法来解决这个问题?
【问题讨论】:
-
考虑使用
NOT EXISTS谓词。事实上,许多数据库优化器会将NOT IN (...)重写为NOT EXISTS。或者,您可以将LEFT OUTER JOIN返回到存储编号 1234 的事务表,并将WHERE checkTable.column is null添加到 where 子句。 -
mysql或teradata?