使用SQLyog,我正在测试是否将正确的值设置到表中。 我试过了
SELECT type_service FROM service WHERE email='test@gmail.com'
因此,只输出了一个结果。
type_service
0
为了继续测试,我尝试设置值1,强制给出警告
警告
您尝试更新的行有2个重复项。你呢 想要更新所有重复项?
注意:您可以取消选中工具 - >来关闭此警告。偏好 - >其他 - >提示是否有多行更新。
但我认为我已经在where子句中加入了限制。所以我推了肯定。 结果,type_service列中所有数据的值都更改为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