假设我有一张桌子Entry
。在查询期间WITH
替换表的子句是否有效?Entry
我尝试使用 SQLite 和 MySql,它似乎可以工作,但我想在应用程序中使用它之前确定这是有意的。
让我添加一些细节。假设我有一个表Entry
和另一个表Thing
,以及这样的查询
SELECT Entry.k, Entry.v, Thing.v2
FROM Entry INNER JOIN Thing ON Entry.v = Thing.k
Run Code Online (Sandbox Code Playgroud)
以下内容有效吗?
WITH Entry AS (SELECT 1 AS k, 1234 AS v)
SELECT Entry.k, Entry.v, Thing.v2
FROM Entry INNER JOIN Thing ON Entry.v = Thing.k
Run Code Online (Sandbox Code Playgroud)
这似乎符合我的要求,但是我可以指望这种行为不是错误或未定义的行为吗?在 SQLite 或 MySQL 的文档中找不到任何明确允许或禁止它的内容。
(我知道在这个特定的例子中我可以SELECT ... FROM Thing WHERE ...
。这不是这个问题的重点 - 请相信我,我有充分的理由编写我正在编写的查询:))