sqlite 表别名的作用域是什么?

ttvkxqim  于 2023-05-18  发布在  SQLite
关注(0)|答案(1)|浏览(151)
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

两个t1t2会冲突吗?
根据我与多家数据库供应商的经验,它们不会冲突,但是,它会不会混淆优化器,以至于在SQLite或SQL中产生错误的结果?
我有这样一个假设:在SQLite中,一个查询会给出虚假的结果。

jtoj6r0c

jtoj6r0c1#

不,化名不会冲突。它们仅在其各自的子查询中是已知的。
当然,查询会因为结尾的逗号而失败。一般来说,应该避免在FROM子句中使用逗号。* 始终 * 使用正确的,明确的,标准,可读的JOIN语法。

相关问题