我正在对 6 个表执行 左外部联接
,但我不希望查询保留重复的列。在 SQLite 中,重复的列用下划线重命名并添加到 View 中。
是否可以在同一个查询中删除它们?
SELECT * FROM AQ_ADRESSES
LEFT OUTER JOIN AQ_CP_ADRESSES ON AQ_ADRESSES.IdAdr = AQ_CP_ADRESSES.IdAdr
LEFT OUTER JOIN AQ_ODONYMES ON AQ_ADRESSES.Seqodo = AQ_ODONYMES.Seqodo
LEFT OUTER JOIN AQ_REFERENTIEL ON AQ_ADRESSES.NoSqNoCivq = AQ_REFERENTIEL.NoSqNoCivq
LEFT OUTER JOIN AQ_MUNICIPALITES ON AQ_ADRESSES.CodeMun = AQ_MUNICIPALITES.CodeMun
LEFT OUTER JOIN AQ_ARRONDISSEMENTS ON AQ_ADRESSES.CodeArr = AQ_ARRONDISSEMENTS.CodeArr
最佳答案
由于您的连接列具有相同的名称,您可以使用 using
运算符来定义连接。在那种情况下,“重复”列将不会成为结果集的一部分
SELECT *
FROM AQ_ADRESSES
LEFT OUTER JOIN AQ_CP_ADRESSES using (IdAdr)
LEFT OUTER JOIN AQ_ODONYMES using (Seqodo)
LEFT OUTER JOIN AQ_REFERENTIEL using (NoSqNoCivq)
LEFT OUTER JOIN AQ_MUNICIPALITES using (CodeMun)
LEFT OUTER JOIN AQ_ARRONDISSEMENTS using (CodeArr)
在 SQLite 3.8 中测试,不知道这在早期版本中是否相同。但这种行为是 SQL 标准所要求的。
但一般来说,select *
在生产中使用的代码中被认为是有害的。
关于SQLite - 删除左外连接中的重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23109915/