SELECT *
FROM (SELECT * FROM tableA as t1 inner join tableB as t2 on t1.id=t2.some_id) as t3,
(SELECT * FROM tableC as t1 inner join tableD as t2 on t1.id=t2.some_id) as t4
WHERE t3.id=t4.id
两个
t1
和t2
会冲突吗?
根据我与多个数据库供应商合作的经验,它们不会发生冲突,但是,它是否会混淆优化器,导致在 SQLite 或 SQL 中产生错误结果?
我对 SQLite 中给出虚假结果的查询有这样的假设。
不,别名不会冲突。它们仅在各自的子查询中为人所知。
一般来说,您应该避免在
FROM
子句中使用逗号。 始终使用正确、明确、标准、可读的JOIN
语法。