2

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

4

2 回答 2

2

尝试使用相关子查询:

UPDATE table1
    SET DATE = 'TODAY'
    WHERE EXISTS (SELECT 1
                  FROM table2
                  WHERE table2.id = table1.table2_id AND table2.value1 >= table2.value2
                 );
于 2014-11-17T13:00:32.487 回答
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

于 2014-11-17T19:32:03.727 回答