如果標題有點令人困惑,我很抱歉。希望這個描述會有所幫助。當在其他表中找不到字段匹配時,從一個表中選擇總計數
我有一個數據庫表記錄頁面瀏覽量在我的網站上。每條記錄都印有用戶IP地址和訪問時間(以及其他詳細信息)。
我有一個包含將被用於測試的IP地址列表,另一個單獨的數據庫表等
我想在第一個表中選擇訪問的總數但只當在其他表中找不到IP地址時。這樣我可以自動隱藏測試數據。
這是可能在一個查詢或我將不得不檢索所有結果,然後單獨檢查每個測試IP地址?
非常感謝。
如果標題有點令人困惑,我很抱歉。希望這個描述會有所幫助。當在其他表中找不到字段匹配時,從一個表中選擇總計數
我有一個數據庫表記錄頁面瀏覽量在我的網站上。每條記錄都印有用戶IP地址和訪問時間(以及其他詳細信息)。
我有一個包含將被用於測試的IP地址列表,另一個單獨的數據庫表等
我想在第一個表中選擇訪問的總數但只當在其他表中找不到IP地址時。這樣我可以自動隱藏測試數據。
這是可能在一個查詢或我將不得不檢索所有結果,然後單獨檢查每個測試IP地址?
非常感謝。
select t1.ip, count(t1.timestamp)
from t1
left outer join t2 on t1.ip = t2.ip
where t2.ip is null
group by t1.ip
將給出每個不在另一個表中的IP的訪問計數。
您需要使用LEFT JOIN
加入表格,因爲您要計入其他表格中不存在的IPAdd
。
SELECT a.IPAdd, COUNT(a.IPAdd) totalCount
FROM Table1 a
LEFT JOIN Table2 b
ON a.IPAdd = b.IPAdd
WHERE b.IPAdd IS NULL
GROUP BY a.IPAdd
另外,您也可以使用NOT EXISTS
SELECT a.IPAdd, COUNT(a.IPAdd) totalCount
FROM Table1 a
WHERE NOT EXISTS
(
SELECT null
FROM Table2 b
WHERE a.IPAdd = b.IPAdd
)
GROUP BY a.IPAdd
嘗試
SELECT
count(*)
FROM
(SELECT
tbl.ip
FROM
tbl
LEFT JOIN
testingTable
ON
tbl.ip = testingTable.ip AND testingTable.ip is null)tmp
嘗試左外連接:
SELECT * FROM `pageViews`
LEFT OUTER JOIN `ipAddresses` ON `pageViews`.`ipAddress = `ipAddresses`.`ipAddress`
WHERE `ipAddresses`.`ipAddress` IS NULL
真棒這是完美的感謝,我會慶祝只要它能讓我回答! – chapmanio