我正在尝试更新Firebird-SQL数据库中的值,我需要使用其他值 WHERE子句中的表。
声明如下:
UPDATE table1 SET date = 'TODAY' FROM table2
WHERE table2.id = table1.table2_id
AND table2.value1 >= table2.value2
显然,这在Firebird-SQL中不起作用。
这可能是一个非常简单的问题,但我不习惯Firebird-SQL。
答案 0 :(得分:2)
尝试使用相关子查询:
UPDATE table1
SET DATE = 'TODAY'
WHERE EXISTS (SELECT 1
FROM table2
WHERE table2.id = table1.table2_id AND table2.value1 >= table2.value2
);
答案 1 :(得分:0)
@Gordon Linoff的回答是一个非常好的方法。另一种方法是使用merge
:
MERGE INTO table1
USING table2
ON (table2.id = table1.table2_id AND table2.value1 >= table2.value2)
WHEN MATCHED THEN
UPDATE SET date = 'TODAY';
除了最简单的情况外,我倾向于使用MERGE
代替UPDATE