1.表结构如图(第一二张),只有user_name(账户名称)和role_type(用户-理发师)定义了唯一性索引和not null ;2.但出现了重复数据第三张图片(同样的手机号,第一行是以用户身份role_type注册,对应余额为0.00;第二行是以理发师的身份注册,对应余额为73064.00)要是这样的话,那你告诉我返回的余额是0,还是73064呢?3.要求:要么返回余额,要么返回空4.最后要求用代码进行验证,针对这个用户,是给空还是余额(给个思路就行)5.可能有的人会想,有重复的删掉不就行了;但往往实际业务情况不能删掉他们-----------------------------------------------------------------现在刚学习mysql, 琢磨了很久,以下是我的思路1,先看表结构2.user_name和role_type 定义了唯一性索引,为什么还有重复的数据? 1>我试着往这两个字段插入重复数据,提示因唯一约束不能插入 那我又想,是之前已经存入数据?因某些业务原因需要修改了表结构,造成这种情况? 还是其他什么原因? 2>现在纠结于它为什么有重复数据;怎么在唯一约束加not null 下插入重复的数据(还不 报错) 有几种情况:1.定义索引之前插入重复数据,再定义约束条件(相对不可能) 2.定义唯一索引没加not null 时,意外插入重复数据,然后才加了 not null约束(不知道有没有这种情况) 3.定义约束条件后意外插入数据(绝对不可能)3.解释下是什么原因造成这样的情况4.(非常重要)代码进行验证给个思路呗, 大神们!!!! 我的思路是:用户登录的时候,根据账户名称到数据库里查询,判断它是否大于1,是的 话就证明该账户违反规则,返回空 各位看我的思路有没有问题,能否实现,不能实现提出原因,怎么解决,谢谢
是这样,一,一个人以两个身份注册(1_普通用户,2_理发师)
二,既然以两个身份注册肯定对应不同的金额
主键 账户名称 注册身份 金额
char varchar varchar duble
id username rol_type money
a1 18235953658 1 0.00
a1 18235953658 2 5622.00
我想要通过账户名称,查找金额,你告诉我查出来的是0.00还是5622
要求用sql语句,返回结果要么是空,要么是5622
首先我给你指出并修改了创建表的一些小纰漏。
作为一张表的id不应该使用char,而应该使用int,并且使用自增。这样的好处就是,你的id不会重复。也不用自己去赋值。其次,不仅仅手机号码需要用unique定义,email也需要用unique定义。
然后定义了unique 唯一的字段是无法重复添加的,即便是已经添加了重复的字段,在修改为unique的时候也会报错的,因此,建议你使用desc sys_user; 来看一下表结构,并提交追问方便后续判断问题所在。
追问是这样,一个人以两个身份注册(1_普通用户,2_理发师)
二,既然以两个身份注册肯定对应不同的金额
没有其他的解决办法吗,我相信肯定有的。前辈您能在仔细帮我看看,还有什么提议或解决的办法吗