是否可以使用同一列中的值更新表上的列?更新取决于按正确顺序选择的行。
我尝试的查询如下:
UPDATE myTable
SET language = (SELECT language FROM myTable t2
WHERE t1.book = t2.book
AND t1.firstRun = t2.lastRun + 1)
FROM myTable t1
WHERE language = '--'
结果是我在一些情况下最终将语言设为NULL。
我的表格如下:
book | firstRun | lastRun | language
----------------------------------------------
b1 | 1 | 4 | English
b1 | 5 | 9 | --
b1 | 10 | 25 | French
b1 | 26 | 28 | --
必需的输出:
book | firstRun | lastRun | language
----------------------------------------------
b1 | 1 | 4 | English
b1 | 5 | 9 | English
b1 | 10 | 25 | French
b1 | 26 | 28 | French
答案 0 :(得分:0)
您是否可以包含一些语言最终为NULL的结果行?还有那些行之前的样子?
要结束为NULL,子查询中的JOIN必须生成0行,或者已经有' myTable'中的行。其中语言为空。
P.S。缩进和清理代码时更容易:
UPDATE
myTable
SET
myTable.language = t2.language
FROM
myTable t2
WHERE
myTable.language = '--' AND
myTable.book = t2.book AND
myTable.firstRun = t2.lastRun + 1