必须误解一些基本的东西,有几张桌子:
table1 (id, minValue)
table2 (table1Id, value)
如果我运行查询:
UPDATE table1 SET minValue = (SELECT MIN(value) FROM table2 WHERE table1.id == table2.table1Id);
我得到了预期的值。但是,如果我运行此查询,则minValues保持为null:
UPDATE table1 SET minValue = MIN(minValue, (SELECT MIN(value) FROM table2 WHERE table1.id == table2.table1Id));
我将从多个表更新minValue,所以我想确保它保持小于传入值,但是当minValue仍然为null时仍然会更新。
答案 0 :(得分:1)
如果你想确保minValue永远不会更新到高于当前值,你需要做的就是添加一个条件,只将更新应用于存在较低传入值的行:
UPDATE table1
SET minValue = (
SELECT MIN(value)
FROM table2
WHERE table1.id = table2.table1Id
)
WHERE EXISTS (
SELECT value
FROM table2
WHERE table1.id = table2.table1Id
AND table2.value < table1.minValue
)
答案 1 :(得分:0)
我相信这就是你要找的东西?
UPDATE table1 SET minValue <= ALL(SELECT MIN(table2.value) FROM table1,table2 WHERE table1.id == table2.table1Id));