Z hlediska výkonu jsou stejné (a vytvářejí stejné plány)
Logicky byste měli provést operaci, která má stále smysl, pokud nahradíte INNER JOIN s LEFT JOIN .
Ve vašem případě to bude vypadat takto:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
AND a.ID = 1
LEFT JOIN
TableB b
ON x.TableBID = b.ID
nebo toto:
SELECT *
FROM TableA a
LEFT JOIN
TableXRef x
ON x.TableAID = a.ID
LEFT JOIN
TableB b
ON b.id = x.TableBID
WHERE a.id = 1
Předchozí dotaz nevrátí žádné skutečné shody pro a.id jiné než 1 , takže druhá syntaxe (s WHERE ) je logicky konzistentnější.