2017-11-27 33 views
0

2つのカラムのテーブルに挿入したい、第1カラムのデータはselectから、第2カラムは別のselectから、両方のselectが同じローのカウントを返します。結果テーブルには、次のようになります。2つのテーブルから選択しながら挿入する

target table column-1 | target table column-2 
--------------------------------------- 
1st select row #1 | 2nd select row #1 
1st select row #2 | 2nd select row #2 
1st select row #3 | 2nd select row #3 

はstackoverflowの記事をたくさん読んで、多くのことを試みたが、それを動作させることができませんでした。

+0

あなたが念頭に置いていたこの何かはありますか? [link](http://sqlfiddle.com/#!9/31e57e/1/0) – woopata

答えて

0

挿入する行を返す単一のSELECT文を記述します。

2番目の選択からの行に一致する1番目の選択から行を取得するには、一致のためのいくつかの基準が必要です。一致するキーがない場合は、ユーザー定義の変数を使用してキーを作成することができます。 (これは、大規模なセットのために高価になるだろう。)ここで

は一例です:

SELECT fsel.col1 
     , fsel.col2 
     , ssel.colX 
     , ssel.colY 
    FROM (-- "1st select" 
      SELECT a.col1 
       , a.col2 
       , @frn := @frn + 1 AS frn 
      FROM sometable a 
      CROSS 
      JOIN (SELECT @frn := 0) i 
      ORDER BY a.col1 
     ) fsel 
    JOIN (-- "2nd select" 
      SELECT b.colX 
       , b.colY 
       , @srn := @srn + 1 AS srn 
      FROM someothertable b 
      CROSS 
      JOIN (SELECT @srn := 0) i 
      ORDER BY b.colX 
     ) ssel 
    ON ssel.srn = fsel.frn 
    ORDER BY fsel.frn 
+0

ありがとうございますが、理解するのは複雑すぎます。 :-)あなたが言ったように、2つのソース "select"の間に関連はありません。いい視点ね。 – brewphone

関連する問題