I am wondering whether CROSS JOIN can be safely replaced with INNER JOIN in any query when it is found.
Is an INNER JOIN witho
In all modern databases all these constructs are optimized to the same plan.
Some databases (like SQL Server) require an ON condition after the INNER JOIN, so your third query just won't parse there.
Visibility scope of the tables is in the JOIN order, so this query:
SELECT *
FROM s1
JOIN s2
ON s1.id IN (s2.id, s3.id)
CROSS JOIN
s3
won't parse, while this one:
SELECT *
FROM s2
CROSS JOIN
s3
JOIN s1
ON s1.id IN (s2.id, s3.id)
will.