2012-09-02 200 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语句将失败。