SQL Server 2008将两个表合并为一个,但得到重复的行

时间:2014-05-22 16:56:02

标签: sql sql-server sql-server-2008

我需要通过SQL Server 2008组合两个表。

table1:

 col  col1  col2_a
 yyy  ddd   1589

表2:

 col  col1  col2_b
 yyy  ddd   6231

表格col和col1的值相同,只有col2不同。 我需要将它们合并到一个表中。

SELECT a.col , a.col1, a.col2_a, b.col2_b
 FROM table1 as a, table2 as b
 WHERE a.col = b.col AND a.col1 = b.col1

但是,这为每个col和col1组合提供了4个重复的行。

任何帮助将不胜感激。

我期待:

 col  col1  cola  colb
 yyy  ddd   1589  6231

1 个答案:

答案 0 :(得分:0)

如果您只想删除完全重复的行,则只需使用DISTINCT;

SELECT DISTINCT a.col , a.col1, a.col2_a, b.col2_b
FROM table1 as a
JOIN table2 as b
  ON a.col = b.col AND a.col1 = b.col1

如果您只希望table2中的一个值(例如最大值),即使有几行匹配,您也可以从table1中选择行,并且只能从table2中选择b.col2的最大匹配值;

SELECT DISTINCT a.col , a.col1, a.col2_a, MAX(b.col2_b) col2_b
FROM table1 as a
JOIN table2 as b
  ON a.col = b.col AND a.col1 = b.col1
GROUP BY a.col, a.col1, a.col2