mysql - SQL 连接表,但排除除 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)
我唯一的问题是我有几十个专栏,不想把它们都写出来。基本上,我需要删除所有列都相同的重复项,除了 datetime 列。
(在不同时间输入的重复项,因此即使 datetime 列中的值不同,对我来说这仍然是重复项。)
有没有办法加入表格但删除除 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 说:文档
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';
然后,如果有重复,您的插入将返回错误。或者要避免它们,请使用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
推荐阅读
- nestjs - busboy 收到文件后出现 ENOENT 错误
- python - 在numpy的参考中找到一个适合基本切片定义的例子
- algorithm - 带有分离过程的大 O 表示法
- firebase - 如何处理来自 firebase 实时数据库的 addValueEventListener?
- amazon-web-services - S3 + Cloudfront 慢
- python - 如何从一个单词制作更多字谜
- qt - 如何使用 UDP 连接到我的 pic32 并从中获得答案
- reactjs - 为什么这个 react-hot-loader 不起作用我在调用规则时收到有关加载程序的错误
- r - 尝试使用“增益”功能编织时出现 RMarkdown 错误
- vue.js - 一页Vue和.NET Core应该怎么做Vuex?