CREATE TABLE dbo.Temp_Test
(Main_id int,
Unique_id char(1) )
insert into Temp_Test(Main_id,Unique_id)
values (1, 'a'),
(2, 'b'),
(3, 'c'),
(4, 'c')
SELECT r.Main_Id, r.Unique_ID, x.Main_Id, x.Unique_id
FROM dbo.Temp_Test r
LEFT JOIN dbo.Temp_Test x
ON r.Unique_ID = x.Unique_ID
AND x.Main_Id < r.Main_Id
WHERE x.Main_Id IS NULL
このクエリの仕組みを理解しようとしています。ステップでそれを実行すると、それはちょうど私をもっと混乱させました。それはこのSQL Left join自体はどのように機能しますか?
SELECT r.Main_Id, r.Unique_ID, x.Main_Id, x.Unique_id
FROM dbo.Temp_Test r
LEFT JOIN dbo.Temp_Test x
ON r.Unique_ID = x.Unique_ID
としてだけで走っていますときに結果が
Main_ID Unique_ID Main_id Unique_id
1 a 1 a
2 b 2 b
3 c 3 c
3 c 4 c
4 c 3 c
4 c 4 c
に変身しかしx.main_id < r.main_idフィルタを実行したときに、我々はに何が起こった
Main_ID Unique_ID Main_id Unique_id
1 a NULL NULL
2 b NULL NULL
3 c NULL NULL
4 c 3 c
を取得します4 C 4列?
4厳密には( '<')未満ではありません4. 4は( '<=')以下です。 – Welbog
行は完全に省略されていますか? – user8395689
左側の「4 C」はすでに出力に表示されています。 – Welbog