子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

【SQL】【SQL Server】結合して抽出しているテーブルの元データを分かりやすく取る方法2

以前次のような記事を書いた。
stsa.hatenablog.com

この内容でもまあ、目的は達成しているのだけどいかんせんダサい。
何がダサいかって、テーブルごとに範囲を選択して切り取らないといけないので手間だ。

そのため、別の方法を考えてみた。
考えた結果、キー項目を一時テーブルに確保してあげて、そのテーブルを条件に使ってSELECTしたらいいのではという考えに至った。

ではSQLについて。

CREATE TABLE #work1
(id int
 ,name varchar(10)
);

CREATE TABLE #work2
(id int
 ,name varchar(10)
);

INSERT INTO #work1
    ([id], [name])
VALUES
    (1, 'test1');
 INSERT INTO #work1
    ([id], [name])
VALUES
    (2, 'test2');

INSERT INTO #work2
    ([id], [name])
VALUES
    (1, 'test12');
    INSERT INTO #work2
    ([id], [name])
VALUES
    (2, 'test22');
    
 -- id集約用
CREATE TABLE #work_id
(id int
);

  INSERT #work_id
  SELECT #work1.id
  FROM #work1 
  INNER JOIN #work2 
  ON #work1.id = #work2.id
  
  SELECT * FROM #work1 WHERE id IN (SELECT id FROM #work_id)
  SELECT * FROM #work2 WHERE id IN (SELECT id FROM #work_id)

うん。こっちの方が扱いやすいね。