0

次のような2つのテーブル(テーブルAとB)があります。

表A:

Col 1    Col 2
--------------
A        1
A        2
A        3
...
A        15
...

表B:

Col 3    Col 4
--------------
A        a
A        b

テーブルBの列4をテーブルAに結合するクエリを記述したいと思います。テーブルBの列3はテーブルAの列1と一致するので、この列に結合したいと思います。私が探している結果は次のとおりです。

表C:

Col 1    Col 2    Col 4
-----------------------
A        1        a
A        2        b
A        3        null
A        4        null
....
A        15       null
....

私は次のことを試しました:

select
    tableA.col1,
    tableA.col2,
    tableB.col4
from
    tableA
inner join tableB on tableA.col1 = tableB.col3

しかし、これにより結果が得られます。

Col 1    Col 2    Col 4
-----------------------
A        1        a
A        1        b
A        2        a
A        2        b
....
A        15       a
....
4

5 に答える 5

3
WITH A AS
(
SELECT *,
       ROW_NUMBER() OVER (PARTITION BY Col1 ORDER BY Col2) AS RN
FROM TableA
), B AS
(
SELECT *,
       ROW_NUMBER() OVER (PARTITION BY Col3 ORDER BY Col4) AS RN
FROM TableB
)
SELECT A.Col1, A.Col2, B.Col4
FROM A LEFT OUTER JOIN B ON A.Col1 = B.Col3 AND A.RN=B.RN

(SQL フィドル)

于 2012-11-16T15:12:24.800 に答える
0

データの変更はオプションですか?

Table A:

Col 1    Col 2
--------------
A        1
A        2
A        3
...
A        15
...
Table B:

Col 2    Col 4
--------------
1        a
2        b

SELECT tableA.col1, tableA.col2, tableB.col4
FROM tableA
LEFT JOIN tableB ON tableA.col2 = tableB.col2
于 2012-11-16T15:14:40.687 に答える
0

left joinの代わりに使用しinner joinます。

  • inner join一致する行のみを結合します
  • left joinright join2 番目のテーブルからの一致した行または null を含む完全な左または右のテーブルを返します
  • full join両方のテーブルからすべての行を取得します。
于 2012-11-16T15:02:17.197 に答える
0

次のように使用LEFT JOINします。

SELECT 
        tableA.col1,
        tableA.col2,
        tableB.col4
    FROM tableA
    LEFT JOIN tableB on tableA.col1 = tableB.col3
于 2012-11-16T15:07:01.490 に答える
0

あなたは正しいクエリや結果を投稿していないと思います:
(私は期待していたでしょう)

Col 1    Col 2    Col 4
-----------------------
A        1        a
A        1        b
A        2        a
A        2        b
...

目的の結果を得るには、テーブル A の列 2 に結合するテーブル B のシーケンス番号を生成する必要があります。
最も簡単な方法は、サブクエリを使用することです。

于 2012-11-16T15:09:14.293 に答える