说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

输入数据时如何简单的判断数据库中是否有重复项?

编辑:说三道四文库 发布时间:2018-06-24 07:33
HTML文档下载 WORD文档下载 PDF文档下载
我是使用的是Mysql,在录入数据时,要求一个字段(如城市名)都不能相同,请问在输入数据时,如何简单的数据库中是否已经存在相同的数据。
我用的笨方法就是在录入数据之前,先把数据库中的数据都slect一下,看看有没有重复,感觉太麻烦了,大家有简单的方法嘛?
就是这样!
select 是最简单的方法了。我想不到还有比这个更简单的方法了。
为数据库字段设置unique,保证无重复即可
select Distinct(城市)
或是输入后在数据库中查询看存在不
如果是用户名字段 可以做一个 检查是否存在这个用户名的功能
同意把数据库字段设置成UNIQUE
如果数据量很大,可以考虑把那个字段也变成主键,这样SELECT 的时候会快一点.
1、select 
2、表字段设置为唯一索引unique
1、入库前先检查是最通用,也是用的最多的
2、指定字段唯一,需插入后检查是否插入成功。
3、若始终以最后插入的为准,可使用replace指令
如果我将字段设置为unique,那么在提交一个重复数据时,系统会显示自动提示错误吗?
如果我将字段设置为unique,那么在提交一个重复数据时,会告诉有错误发生。
一般把这个给屏蔽不给最终用户,提示重复信息就是。
先select检查是方便又麻烦啊。
还是先select方便一些
只了解点select
6.4.3.1 INSERT ... SELECT 句法
INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name [(column list)] SELECT ...

使用 INSERT ... SELECT 语句,你可以从一个或多个表中读取多个记录行,并将其快速地插入到一个表中。 

INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE
tblTemp1.fldOrder_ID > 100;

一个 INSERT ... SELECT 语句有下列条件的限止: 

INSERT 语句中的目标表不能在 SELECT 查询部分的 FROM 子句中出现,因为在 ANSI SQL 中,禁止你从正在插入的表中 SELECT。(问题是因为,SELECT 可能会发现在同一运行期内先前被插入的记录。当使用子选择子句时,这种情况将会更容易混淆!) 
AUTO_INCREMENT 列像平常一样工作。 
你可以使用 C API 函数 mysql_info() 得到查询的信息。查看章节 6.4.3 INSERT 句法。 
为了确保二进制日志可以被用于重建最初的表,MySQL 将不允许在 INSERT ... SELECT 期间并发的插入。 
你当然也可以使用 REPLACE 代替 INSERT 来盖写老的记录行。 

在输出的时候不要把重复项输出来就可以了。
如果在插入前要检查是否有重复项,只能先select一下。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘