2

私はテーブルを持っています

col1

1
2

と他のテーブル

col1    col2    col3

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

両方のテーブルを結合して、次の結果を取得したい

col1  col2  col3

1       1    data value one
2       3    data value two

2 番目のテーブルには重複がありますが、1 つだけ (ランダムに) 結合する必要があります。Inner Join、Left Join、Right Join を試してみましたが、常にすべての行が返されます。実際に使っていますSQL Server 2008

4

3 に答える 3

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
于 2012-11-06T12:21:44.427 に答える
0

ROW_NUMBER関数を使用してORDER BY NEWID()、col1 の値ごとにランダムな行を 1 つ取得するには:

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
于 2012-11-06T12:15:30.550 に答える
0

Distinctを使用すると重複がなくなりますが、両方の行に同じデータが含まれていると確信していますか?

于 2012-11-06T11:49:44.557 に答える