Sql 更新和来自

Sql 更新和来自,sql,sql-server,Sql,Sql Server,我在一篇文章中看到了这个查询,它是通过另一个表上的记录来更新一个表,但我无法理解它背后的逻辑。尤其是我从未在更新查询中使用过FROM 和… (如果我想直截了当地说,我应该说我正在寻找一种洞察,以了解如何翻译/调试/跟踪,或者简而言之,通过每一行理解SQL结果。当我看到一行代码时,我知道它在做什么,但到目前为止,我只能通过实践记住SQL查询的结构。 我想知道先处理哪一行,然后是什么……这样我就可以写更复杂的代码了。你能给我一个参考吗?) 首先,尝试以下方法: SELECT T.col1 ,

我在一篇文章中看到了这个查询,它是通过另一个表上的记录来更新一个表,但我无法理解它背后的逻辑。尤其是我从未在更新查询中使用过FROM

和…

(如果我想直截了当地说,我应该说我正在寻找一种洞察,以了解如何翻译/调试/跟踪,或者简而言之,通过每一行理解SQL结果。当我看到一行代码时,我知道它在做什么,但到目前为止,我只能通过实践记住SQL查询的结构。 我想知道先处理哪一行,然后是什么……这样我就可以写更复杂的代码了。你能给我一个参考吗?)

首先,尝试以下方法:

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'

这将向您展示更新的结果。

首先,我发现在SQL引擎中,处理命令的层次结构是不同的,因此没有独特的方式来思考和理解类似SQL的代码行。 我还发现FROM通常首先是一个过程,然后它会上升到select。在所有的SQL命令中都有一个独特的层次结构,所以我只想把SQL看作一种人类语言,然后尝试找到一种逻辑方法来完成我认为它应该完成的事情,在大多数情况下,这是可行的


例如,在SELECT中,机器应首先带来一个表,然后找到应应用的条件,因此下一步在哪里,然后应准备好数据以供查看,以便下一步处理SELECT。这是我发现的最接近的东西。:)

您使用哪种数据库管理系统?SQL不是专用的。它不会一行一行地做事情。如果您使用的是SQL Server(请告知我们并添加标记),请按CTRL-L查看它在幕后的工作。例如,它可能做的第一件事是尝试查找所有
Some_表
记录,这些记录='cool'。或者,它可能要做的第一件事就是找到所有可能匹配的键。关于第二个问题(执行顺序),如果您使用的是SQL Server,您可能会感兴趣。它记录了
SELECT
查询的各个子句的逻辑执行顺序。不确定是否有类似的海报用于
UPDATE
语句。您必须了解它是基于设置的,而不是程序性的。看看我建议的查询计划,这可能有助于理解。是的,我已经做了,尼克。理解一个完整的查询在最后做了什么很好,但是我正在寻找一种洞察力来编写查询,无论我需要什么。所以,我想我需要知道每个级别的输出,以及哪个部分从哪个部分给出!检查这个,这是一个有趣的图表:谢谢。)在更新查询中执行select可能非常有用。我知道它在做什么,但我希望了解SQL查询背后的逻辑。
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'