如何消除由于表设计不好而导致的SQL联接中的重复行

  • 本文关键字:SQL 何消 于表 sql ms-access
  • 更新时间 :
  • 英文 :


我用左联接将6列添加到主表中,但右表的主键列中有重复列,因为它的设计不正确。我无法解决这个问题,所以我必须与我的同事一起工作。我在MS Access中这样做,所以我不能访问像"按分区分组"这样的东西。

联接表:

KeyID PA QL
1111 X
1111 X

我不确定我是否理解这个问题,但您可以应用聚合函数(如MAX(来消除null:

SELECT t1.KeyID, MAX(t2.PA) AS PA, MAX(t2.QL) AS QL
FROM t1
LEFT JOIN t2
ON t1.KeyID = t2.KeyID
GROUP  BY t1.KeyID;

您可以使用两个子查询:

SELECT 
KeyID, 
(Select PA 
From YourTable As T 
Where T.KeyID = YourTable.KeyID And PA Is Not Null) AS PA, 
(Select QL 
From YourTable As T 
Where T.KeyID = YourTable.KeyID And QL Is Not Null) AS QL
FROM 
YourTable
GROUP BY 
KeyID;

我的想法不是很可扩展,因为你必须为每个有这个问题的列创建一个新的查询,但下面是我的方法。

进行3次查询:

仅限
  1. [Distinct KeyID]
  2. PA不为空的主表
  3. 主表WHERE QL不为NULL

现在是第四个查询,

SELECT query1.KeyID, query2.PA, query3.QL
FROM query1
LEFT OUTER JOIN query2 ON query1.KeyID = query2.KeyID
LEFT OUTER JOIN query3 ON query1.KeyID = query3.KeyID

最新更新