栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

结合两个查询来检查MySQL中的重复项?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

结合两个查询来检查MySQL中的重复项?

您的问题实际上有两个问题。第一个问题是使

Number
列唯一,第二个问题是
Name
通过添加数字(如果已经存在)来增加列。

第一部分

由于数字为

UNIQUE
,因此
UNIQUE
对列实施约束。可能是a
PRIMARY KEY
或a
UNIQUE KEY
。

如果该列没有,

KEY
而您想创建该列
PRIMARY
,则
ALTER
语句如下:

ALTER TABLE TableName ADD ConSTRAINT tb_pk PRIMARY KEY (Number)
  • SQLFiddle演示

但是如果您只希望它

UNIQUE
成为主键而不是主键,

ALTER TABLE TableName ADD ConSTRAINT tb_uq UNIQUE (Number)
  • SQLFiddle演示

第二部分

实际上,您可以不使用join来执行此操作。

INSERT INTO TableName(Number, Name)SELECt  124 AS Number,         CONCAt('Robert', COALESCE(MAX(CAST(REPLACE(Name, 'Robert', '0') AS UNSIGNED)) + 1,'')) AS NameFROM    TableNameWHERe   Name LIKE 'Robert%'
  • SQLFiddle演示
  • SQLFiddle演示( 添加了更多示例 )
  • SQLFiddle演示( 由于唯一性而引发异常 )

一些细节:

当列上提供的值

Number
已经存在时,由于列是唯一的,因此将引发错误。我从已删除的帖子中读到一条评论,上面写着: “
..数字不是唯一的,但如果确实存在,则我不想输入记录。”
-如果您不想在列上添加 唯一性
,则没有任何意义。您怎么知道这个号码是否已经存在?对
Number
感觉的存在进行一点检查对我来说有点像是开销。因此,我最好的建议是强制执行唯一性。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/410912.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号