我有兩個表,一個是「電話號碼」表,另一個是「電話」表。調用表有兩列興趣:起始號碼列(c.orig)和終止號碼列(c.term)。左表1中的一列到表2中的兩列
我想寫一個MySQL查詢,它將返回呼叫表中的所有記錄,其中也不是 c.orig號或c.term號存在於數字表(「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是兩個電話號碼都不在數字表中的情況。這些是我試圖找到的記錄。在電話號碼錶中找不到電話號碼的記錄。
只是好奇,爲什麼你在第二次加入時使用「m」而不是「n」? –
'm'和'n'被稱爲別名。不能有兩個表具有相同的別名,這就是我爲什麼這樣做的原因。 –
由於某種原因,這個查詢返回false ...就像它壞了或什麼的。當我嘗試對行進行計數時,它不會像我所期望的那樣返回零。 –