0
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 表不存在或不拥有

4

3 回答 3

2

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

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';
于 2016-10-18T13:49:00.290 回答
1

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

   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'

这是等价的。

于 2016-10-12T11:12:17.437 回答
1

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

于 2017-02-23T20:59:10.190 回答