As another commenter said, if your table have required ID columns, you should specify it in your SELECT.
SELECT x.Id,x.a,y.ID,y.b
FROM x
LEFT JOIN y
on x.a = y.a
The output [Id12345,5,Id6789,NULL] means the column is null.
The output [Id12345,5,NULL,NULL] means the row is empty.
On a side not, I use the SQL below all the time to identify missing rows on the "comparetable".
SELECT #basetable.columnname
FROM #basetable
LEFT OUTER JOIN #comparetable
ON #basetable.columnname1 = #comparetable.columnname1
and #basetable.columnname2 = #comparetable.columnname2
and #basetable.columnname3 = #comparetable.columnname3
WHERE #comparetable.columnname1 is null
On a side not, I use the SQL below all the time to identify missing rows on the "comparetable".