2012-10-02 81 views
0

我有訪問過的人的統計數據庫。該表包含ID,時間戳IPv4,IPv6,用戶代理和REQUEST_URI。我通過運行這樣MYSQL SELECT行不在查詢中

SELECT COUNT(DISTINCT IPv4) AS 'Uniques', COUNT(*) AS 'Total' FROM statistics

所以我需要從人類篩選出機器人得到錯誤的數字。我的做法是這樣的:

SELECT ID FROM statistics WHERE NOT EXISTS(SELECT ID FROM statistics WHERE useragent NOT LIKE '%bot%')

這應該從統計數據中不存在其中搜索非機器人的查詢選擇所有的行。我認爲查詢看起來很合理,爲什麼它不起作用?

而且還有一個原因,我想這樣做,這樣,而不是

SELECT ID FROM statistics WHERE useragent LIKE '%bot%'

任何想法?

回答

1

我有點困惑,但也許你想做的事:

SELECT ID FROM statistics 
WHERE ID NOT IN (SELECT ID FROM statistics WHERE useragent NOT LIKE '%bot%') 
+0

好,謝謝,這做到了。只是想知道爲什麼我的NOT IN沒有工作...... –

+0

不存在與NOT IN不同的地方。有關詳細信息,請參閱[MSDN EXISTS](http://msdn.microsoft.com/it-it/library/ms188336.aspx)(您使用的是MYSQL而不是MS SQL Server,但這些關鍵字的含義並不是'不同)。 – ufo