我有一张表deal
:
CREATE TABLE `deal` (
`id` int(11) NOT NULL auto_increment,
`site` int(11) NOT NULL default '0',
`area` int(11) NOT NULL default '0',
`name` varchar(255) default NULL,
PRIMARY KEY (`id`)
);
我想创建:
UNIQUE KEY `site` (`site`,`area`,`name`);
但现在,name
提交的并不是唯一的,当我创建此密钥时,我收到错误:
duplicate entry 'aaa' for key 2
我的表数据:
Data
id site area name
---------------------------------
1 site1 area1 aaa
2 site1 area2 bbb
3 site1 area1 aaa <<<< i want delete this
4 site2 area1 ccc
5 site2 area1 ccc <<<< i want delete this
...
如何通过一个sql字符串来完成它?
感谢您的帮助:)
答案 0 :(得分:1)
从这个链接检查我的回答希望应该帮助你 - 因为你已经有了ID列,所以在我的回答中忽略添加身份
答案 1 :(得分:1)
我认为这应该为你做到
Delete From deal
Where ID in (
Select Max(Id)
From deal
Group by [site], area, [Name]
Having Count(id) > 1
)
因为这是删除 - 这是未经测试的,所以请先测试一下。
答案 2 :(得分:0)
DELETE FROM site
WHERE id NOT IN (
SELECT id
FROM site
GROUP BY name
)