使用多个表中的值更新Statement

时间:2014-11-17 11:24:12

标签: sql firebird firebird-embedded

我正在尝试更新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。

2 个答案:

答案 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