2012-11-06 39 views
2

我有一個表聯接表與重複

col1 

1 
2 

和其他表

col1 col2 col3 

1   1 data value one          
1   2 data value one          
2   3 data value two 

SQL Server和我想加入這兩個表,得到如下結果

col1 col2 col3 

1  1 data value one 
2  3 data value two 

的第二個表有重複,但我只需要加入一個(隨機)。我嘗試過使用Inner Join,Left Join,Right Join並始終返回所有行。其實我用SQL Server 2008

回答

0

可以沿着使用ROW_NUMBER功能的ORDER BY NEWID()要獲得每個值一個隨機行COL1:

WITH CTE AS 
( SELECT Col1, 
      Col2, 
      Col3, 
      [RowNumber] = ROW_NUMBER() OVER(PARTITION BY Col1 ORDER BY NEWID()) 
    FROM Table2 
) 
SELECT * 
FROM Table1 
     INNER JOIN CTE 
      ON CTE.Col1 = table1.Col1 
      AND CTE.RowNumber = 1 -- ONLY GET ONE ROW FOR EACH VALUE 
0

使用Distinct它會消除dups,但是您確定兩行將包含相同的數據?

+0

我試過鮮明太,但查詢過返回所有行。從表中選擇獨特*。 – user1802898

3
select t1.col1, t2.col2, t2.col3 from table1 t1 
cross apply 
(select top 1 col2, col3 from table2 where col1 = t1.col1 order by newid()) t2