以前次のような記事を書いた。
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');
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)
うん。こっちの方が扱いやすいね。