0

次の2つのテーブルがあります。

table1(a,b,c,d) table2(a,b,c,d)

私の要件は、2 つのテーブルをマージすることです。両方のテーブルに列 a と b の組み合わせ (列 a と b の組み合わせのみ、つまり a と b の値が同じ) の行がある場合、最初のテーブルの行を保持します。

私がはっきりしていることを願っています。クエリを提案してください。

注: どちらのテーブルにも主キーはありません。

ありがとう、

アップデート:

「s1.a = s2.a AND s1.b = s2.b」で左結合すると、行が重複し、列 a と b の値が異なる 2 番目のテーブルから値が選択されません。たとえば、次のように table1 に 2 つの行があるとします。

11,22,33,44 -- 11,55,33,44

および table2 の 2 行は次のとおりです。

11,22,33,44 -- 66,77,44,88

出力は次のように 4 行です。

11,22,33,44 -- 11,22,33,44 -- 11,55,33,44 -- 11,55,33,44

アップデート:

ただし、出力は次のようになります。

11,22,33,44 -- 11,55,33,44 -- 66,77,44,88

ここでUNION + JOIN + GROUP BYの組み合わせが必要ですが、正しい組み合わせ/クエリを思いつくことができません。

4

1 に答える 1

0
SELECT s1.* FROM 
(SELECT a,b,c,d FROM table1) s1
LEFT JOIN
(SELECT a,b,c,d FROM table2) s2
ON s1.a = s2.a AND s1.b = s2.b

アップデート:

SELECT a,b,c,d FROM table1 GROUP BY a,b,c,d
UNION
SELECT a,b,c,d FROM table2 GROUP BY a,b,c,d
于 2013-05-08T11:08:58.007 に答える