Mysql SQL联接表,但排除除1之外所有列都匹配的重复项
我几乎没有SQL方面的经验,需要连接具有许多重复条目的表。 我已经浏览了相当多的答案,我能找到的最接近我的问题是: 它建议使用此代码,以便根据表的名称和邮政编码列匹配表Mysql SQL联接表,但排除除1之外所有列都匹配的重复项,mysql,sql,join,duplicates,union,Mysql,Sql,Join,Duplicates,Union,我几乎没有SQL方面的经验,需要连接具有许多重复条目的表。 我已经浏览了相当多的答案,我能找到的最接近我的问题是: 它建议使用此代码,以便根据表的名称和邮政编码列匹配表 INSERT INTO TABLE1 SELECT * FROM TABLE2 A WHERE NOT EXISTS (SELECT 1 FROM TABLE1 X WHERE A.NAME = X.NAME AND A.post_code = x.p
INSERT INTO TABLE1
SELECT * FROM TABLE2 A
WHERE NOT EXISTS (SELECT 1 FROM TABLE1 X
WHERE A.NAME = X.NAME AND
A.post_code = x.post_code)
我唯一的问题是我有几十个专栏,不想把它们都写出来。
基本上,除了datetime列之外,我需要删除所有列都相同的重复项
(在不同的时间输入的重复项,因此即使datetime列中的值不同,对我来说这仍然是重复项。)
是否有方法连接表,但删除除1列之外所有列都匹配的重复项
更新:
非常感谢你的回答!我可能做错了,但现在我遇到了SQL错误,因为列太多了:
在audi_all上创建唯一索引unq_audi_all_列(Vehicle
,listedprice
,Anunciante
,Marca
,Modelo
,Série
,Versão
,燃烧层
,Mè去登记
,去登记
,基尔
,Cilindrada
,,,ode>Aceita retoma
,Possibilidade de financiamento
,Cor
,Tipo de Caixa
,Número de Mudanças
,Nºde portas
,Lotaç
,Classe do veíículo
,Tracççççço
,,
,Livro de Revisões completo
,Não fumador
,2ºChave
,Jantes de Liga Leve
,Ar Condicinodo
,Inspecço válida até
,Origem
,Estofos
,安全气囊编号
,,
,特殊过滤
,Tecto de Abrir
,Medida Jantes de Liga Level
,VIN
,IVA dedutível
,排放二氧化碳
,IUC
,ou até
,材料
,Conso Combino
,,乌莫乌尔巴诺
,Consumo Extra Urbano
,Capota
,Capota Eléctrica
,Clássico
,Salvado
,Valor sem IUC
,Valor sem ISV
,[…]
MySQL说:文档
1070-指定的关键部分太多;最多允许32个部分通过创建唯一索引防止重复:
create unique index unq_table1_all_columns on table1 ( . . . ); -- you gotta list the columns here.
您确实需要列出这些列,但这是必要的,以便数据库了解您的意图。使用以下内容可以轻松构建列表:
select group_concat(column_name, ', ')
from information_schema.columns
where table_name = 'table1';
如果存在重复项,则插入操作将返回错误。或者要避免重复项,请在重复密钥更新时使用:
insert into table1
select *
from table2
on duplicate key update name = values(name); -- this does nothing but it avoids an error on a duplicated row
这里的大多数人都希望样本数据和预期结果是格式化文本。(没有图像,没有链接。)@jarlh“Most”可能有些夸张