MySQL重复

时间:2015-08-06 23:50:27

标签: mysql duplication

使用SQLyog,我正在测试是否将正确的值设置到表中。 我试过了

SELECT type_service FROM service WHERE email='test@gmail.com'

因此,只输出了一个结果。

type_service
0 

为了继续测试,我尝试设置值1,强制给出警告

  

警告

     

您尝试更新的行有2个重复项。你呢   想要更新所有重复项?

注意:您可以取消选中工具 - >来关闭此警告。偏好 - >其他 - >提示是否有多行更新。

但我认为我已经在where子句中加入了限制。所以我推了肯定。 结果,type_service列中所有数据的值都更改为1。 为什么?

1 个答案:

答案 0 :(得分:1)

表格中有2个完全相同的行。的精确即可。这是一个友好的警告,但很可能需要通过轻微的架构更改来解决。

最简单的解决方案是更改表并添加auto_increment主键列。

Mysql Alter Table手册页here

请参阅此Webyog常见问题link

每当我要把另一张桌子搞砸时,我通常都会把它弄得像:

create table blah
(
    id int auto_increment primary key,
    ...
    ...
    ...
);

为了安全起见。

如果您没有auto_increment PK,请参阅以下内容。

create table people
(
    firstName varchar(40) not null,
    lastName varchar(40) not null,
    age int not null
);

insert people (firstName,lastName,age) values ('Kim','Billings',30),('Kim','Billings',30),('Kim','Billings',30);

select * from people;

-- this could be bad:
update people
set age=40
where firstName='Kim' and lastName='Billings';

ALTER TABLE people ADD id INT PRIMARY KEY AUTO_INCREMENT;

select * from people;  -- much nicer now, schema has an id column starting at 1

-- you now at least have a way to uniquely identify a row