INNER JOIN
Returns only rows where join keys exist in both inputs.
Kept rows: matched rows only (intersection).
Use when you only want confirmed relationships.
Smart SQL Tools for Every Database
Server-Aware JOIN Playground
Choose your server type, pick a JOIN function, and visualize how two query results merge. This page runs fully static in the browser.
For local testing, open this page through a local static server so script and style files load from your workspace.
Server compatibility note will appear here.
Run Visualize JOIN to see the merge flow between both input queries.
Run Visualize JOIN to see sample merged rows.
Each JOIN type below explains what rows are kept and when to use it.
Tip: click a JOIN card in Detailed JOIN Explanations to preview kept rows. Muted rows are not deleted; click Visualize JOIN to regenerate the actual row set.
Returns only rows where join keys exist in both inputs.
Kept rows: matched rows only (intersection).
Use when you only want confirmed relationships.
Keeps every row from left input and matches right when possible.
Kept rows: all left rows plus matched right rows.
Use when left input is primary and right is optional.
Keeps every row from right input and matches left when possible.
Kept rows: all right rows plus matched left rows.
Use when right input is primary and left is optional.
Keeps all rows from both sides; unmatched columns become NULL.
Kept rows: left-only, matched, and right-only rows.
Use for reconciliation and mismatch discovery.
Returns all combinations between left and right rows.
Kept rows: cartesian product (every left row with every right row).
Use for matrix expansion and combinations.
Choose a JOIN type to see a deeper operational explanation.