更新中

Update in ingres

UPDATE  m
SET    m.class_code = 'new cod'
FROM   models as  m 
inner join type a on m.model_number = a.model_number
WHERE  a.type_number NOT IN ( 1, 10 )
       AND m.class_code = 'UN'

我有这个查询,但在 Ingres DB 中它不想 运行。我不明白为什么。我确定它应该在 MSSQL 中工作,但在 Ingres 中它抛出错误 e_us0845 table 不存在或不拥有

在 Ingres SQL 语法中,UPDATE ... FROM 在 from 部分只需要一个或多个 table 名称,因此您不能在那里使用内部连接语法。但是,由于它是内部连接而不是外部连接,您可以将其写为:

   UPDATE  m
    SET    m.class_code = 'new cod'
    FROM   models as  m 
    WHERE  m.model_number = a.model_number
    AND a.type_number NOT IN ( 1, 10 )
    AND m.class_code = 'UN'

这是等价的。

Paul 发布的 SQL 中似乎存在轻微的语法错误。 由于我是 Whosebug 的新手,我的代表不足以评论他现有的答案,所以我将添加这个单独的答案。

update models as m
from type as a
set m.class_code='new cod'
where m.model_number = a.model_number
and a.type_number not in (1,10)
and m.class_code='UN';

您不能将关联名称与更新目标一起使用。将 set m.class_code='new cod' 更改为 set class_code='new cod',它将 运行。