我有两张表,一张是“电话号码”表,另一张是“通话”表。呼叫表有两列感兴趣:始发号码列 (c.orig) 和终止号码列 (c.term)。
我正在尝试编写一个 MySQL 查询,它将返回调用表中的所有记录,其中c.orig编号或 c.term 编号都不存在于 numbers 表中(numbers 表中的“n.num”列)。
这是我的 SQL 查询:
SELECT
c.id, c.date, c.orig, c.term, c.duration
FROM calls as c
LEFT JOIN numbers as n ON (n.num = c.orig AND n.num = c.term)
WHERE
c.period = '2012-08' AND
n.num IS NULL
GROUP BY c.call_id
ORDER BY c.call_id
LIMIT 0,300
有任何想法吗?
这里有一些进一步的说明:
------------------------------
table: numbers
nid num
1 111-222-3333
2 222-333-4444
3 333-444-5555
------------------------------
------------------------------
table: calls
id orig term
1 333-444-5555 999-999-9999
2 999-999-9999 111-222-3333
3 222-333-4444 999-999-9999
4 888-888-8888 999-999-9999
5 777-777-7777 999-999-9999
------------------------------
呼叫 ID 1、2 和 3 至少具有可在数字表中找到的两个数字(原始或术语)之一。
呼叫 ID 4 和 5 是两个电话号码都不在号码表中的情况。这些是我试图找到的记录。在号码表中未找到任何电话号码的记录。