首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移除某些字段的重复项

移除某些字段的重复项
EN

Stack Overflow用户
提问于 2011-04-23 11:34:43
回答 2查看 145关注 0票数 2

我的桌子看上去如下:

代码语言:javascript
复制
Field     | Type         | Null    | Key    | Default | Extra
----------+--------------+---------+--------+---------+----------------
index     | int(11)      | NO      | PRI    | NULL    | auto_increment
itemid    | int(11)      | NO      |        | NULL    |
name      | varchar(32)  | NO      |        | NULL    |
meta      | int(11)      | NO      |        | NULL    |

桌子很小,我不需要关心优化。

有些记录有itemidnamemeta复制,但我想删除所有复制了itemidnamemeta的记录,留下一条记录(不再重复)。我是MySQL。我寻找解决办法,但没有找到适合我需要的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-23 11:42:41

由于数据很小,创建具有类似结构的表并执行这样的查询可能更简单:

代码语言:javascript
复制
INSERT INTO new_table (index, itemid, name, meta)
SELECT index, itemid, name, meta FROM old_table GROUP BY name

然后删除old_table并重命名new_table

另外,可以工作的解决方案(我不确定)是使用IGNORE创建一个唯一的索引,如

代码语言:javascript
复制
ALTER IGNORE TABLE tblname
ADD UNIQUE INDEX ix_name (name)

忽略是标准SQL的MySQL扩展。它控制ALTER的工作方式,如果新表中的唯一键上有重复项,或者启用严格模式时会出现警告。如果未指定忽略,则在发生重复键错误时,该副本将被中止并回滚.如果指定了“忽略”,则只有第一行用于唯一键上有重复项的行,则删除其他相互冲突的行。不正确的值被截断到最接近匹配的可接受值。

票数 3
EN

Stack Overflow用户

发布于 2011-04-23 11:43:22

不确定这是否是你想要的,但你可以试着按条款分组。

代码语言:javascript
复制
SELECT index, itemid, name, meta FROM table GROUP BY name
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5763942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档