表别名的范围是什么?

问题描述 投票:0回答:1
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 中给出虚假结果的查询有这样的假设。

sql sqlite
1个回答
4
投票

不,别名不会冲突。它们仅在各自的子查询中为人所知。

一般来说,您应该避免在

FROM
子句中使用逗号。 始终使用正确、明确、标准、可读的
JOIN
语法。

© www.soinside.com 2019 - 2024. All rights reserved.