我在其中一篇文章中看到了这个查询,用另一张桌子上的记录来更新表格,但我无法理解它背后的逻辑。特别是我从未在UPDATE查询中使用过FROM。
和... 的
(如果我想直言不讳,我应该说我正在寻找一个洞察力,以了解我如何翻译/调试/跟踪或简而言之,了解每行的SQL结果。当我看到一行代码我知道它在做什么,但到目前为止,我只能通过实践记住SQL查询的结构。 我想知道首先处理哪一行,接下来会发生什么......所以我可以编写更复杂的代码。你能给我一个参考吗?)
UPDATE
T
SET
T.col1 = OT.col1,
T.col2 = OT.col2
FROM
Some_Table T
INNER JOIN
Other_Table OT
ON
T.id = OT.id
WHERE
T.col3 = 'cool'
答案 0 :(得分:1)
首先尝试这个:
SELECT
T.col1 , OT.col1,
T.col2 , OT.col2
FROM
Some_Table T
INNER JOIN
Other_Table OT
ON
T.id = OT.id
WHERE
T.col3 = 'cool'
这将显示更新的结果是什么。
答案 1 :(得分:0)
首先,我发现在SQL Engines中,处理命令的层次结构是不同的,所以没有像代码行那样思考和理解SQL的独特方式。 我还发现FROM通常是最初的进程,然后它会进行选择。在所有SQL命令中都有一个独特的层次结构,因此我只是将SQL视为人类语言,然后尝试找到我认为它应该完成的逻辑方式,并且在大多数情况下这将起作用。
例如,在SELECT中,机器应首先带一个表,然后找到应该应用的条件,接下来是WHERE,然后准备好查看数据,这样SELECT就会被处理掉。这是我发现的最接近的事情。 :)