2012-09-02 81 views
2

是否有SQL語句來檢查字段是否存在? 例如: 我有一個數據庫包含以下內容:URL, IsCrawled, Level等等 我需要檢查URL是否已經存在。 我不關心其他領域。 我正在寫一個非常快的爬蟲,這是必要的。Mysql避免重複的URLS

+1

您可以在URL字段中放置一個唯一索引,以便相同的URL不能插入兩次。 – Sam

+0

從數據庫方面解決這個問題。爲url字段添加唯一索引。它將執行獨特的約束並提高性能 – Icarus

回答

1

你爲什麼不使用任何指數下一個普通的選擇:

SELECT ID FROM TABLE WHERE URL = @URL 

如果選擇不爲空,那麼就已經之一。

現在,根據您的問題,另一個更好的主意是添加一個UNIQUE CONSTRAINT,所以通過設計您的數據庫不會允許重複的值。

現在,如果您只想比較要查看的網址的一部分(即域),那麼可以使用LIKE比較函數來查看是否已存在具有相同域名的一個URL。

+0

謝謝!正是我在找的! – user1599078

+0

這不會考慮無關的參數,例如市場營銷活動等等,這會影響檢查過程。 –

3
ALTER TABLE `table` 
ADD UNIQUE INDEX `urls` (`URL`) 

或簡單,

ALTER TABLE `table` 
ADD UNIQUE(`URL`); 

雖然,我使用第一種方法。只讀了關於第二種方法的工作。 它可能不是如此

1

這是你想要的嗎?

SELECT COUNT(*) 
FROM tableName 
WHERE `URL` = 'urlHERE' 

,如果它不存在,它將會有0結果。或在fieldd URL

ALTER TABLE tableName 
ADD CONSTRAINT indexName UNIQUE (`Url`) 

以這種方式添加唯一索引,如果您將已經存在的URL Insert語句將失敗。