[英]SQL join tables but exclude duplicates where all columns match except 1
我对 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.post_code)
我唯一的问题是我有几十个专栏,不想把它们都写出来。 基本上,我需要删除所有列都相同的重复项,除了日期时间列。
(在不同时间输入的重复项,因此即使日期时间列中的值不同,对我来说这仍然是重复项。)
有没有办法加入表,但删除除 1 列以外的所有匹配项的重复项?
更新:
非常感谢您的回答! 我可能做错了,但现在我收到 SQL 错误,因为列太多:
在audi_all(创建唯一索引unq_audi_all_columns Vehicle
, listed Price
, Anunciante
, Marca
, Modelo
, Série
, Versão
, Combustível
, Mês de Registo
, Ano de Registo
, Quilómetros
, Cilindrada
, Potência
, Valor Fixo
, Aceita retoma
, Possibilidade de financiamento
, Segmento
, Cor
, Tipo de Caixa
, Número de Mudanças
, Nº de portas
, Lotação
, Classe do veículo
, Tracção
, Garantia de Stand (incl. no preço)
Registo(s)
Livro de Revisões completo
, Não fumador
, 2º Chave
, Jantes de Liga Leve
, Ar Condicionado
, Condição
, Inspecção válida até
, Origem
, Estofos
, Numero de Airbags
, Metalizado
, Garantia mecanica fabricante até
, Filtro de Particulas
, Tecto de Abrir
, Medida Jantes de Liga Leve
, VIN
, IVA dedutível
, Emissões CO2
, IUC
, ou até
, Matrícula
, Consumo Combinado
, Autonomia Máxima
, Consumo Urbano
, Consumo Extra Urbano
, Capota
, Capota Eléctrica
, Clássico
, Salvado
, Valor sem IUC
, Valor sem ISV
,[...]
MySQL 说: 文档
通过创建唯一索引来防止重复:
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';
如果有重复,您的插入将返回错误。 或者为了避免它们,请使用on duplicate key update
:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.