这个查询是什么意思?这个SQL查询做了什么?请解释
@numberx = @numberx -1
UPDATE th
SET @numberX= numberY= @numberX + 1
FROM Table1 th
INNER JOIN Table2 td ON th.Id = td.idth
WHERE td.anything = @anything
在第3行,这个“双等号”是什么? UPDATE上的“from”和“inner”是什么?
这个查询是什么意思?这个SQL查询做了什么?请解释
@numberx = @numberx -1
UPDATE th
SET @numberX= numberY= @numberX + 1
FROM Table1 th
INNER JOIN Table2 td ON th.Id = td.idth
WHERE td.anything = @anything
在第3行,这个“双等号”是什么? UPDATE上的“from”和“inner”是什么?
这是一个多表更新,用于为Table1
中的每一行分配连续的数字,其中Table2
中的对应行对列anything
具有特定值。
对于每个匹配行,它将列numberY
设置为值@numberX + 1
。它还将该值重新分配到@numberX
,这会导致每行增加@numberX
。
这被称为“古怪的更新”。这是一个没有记录,也没有保证的方法来产生运行总数。应该使用SUM() OVER (ORDER BY ...)
代替。
那是一排逐行增量更新,或将所有numberY值收到相同的增量? (几乎用英语出来......) –
这是否保证在SQL Server中工作?我没有看到为什么应该通过变量的存在序列化更新。 –
@MarkByers - 什么RDBMS支持这个? –
你应该阅读[理解加入]这个优秀的文章(http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) – Bartek