2016-10-12 50 views
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表不存在或不是擁有的更新ingres

+0

嗨安德烈,這是一個會議桌嗎?如果是這樣,你可以檢查http://community.actian.com/forum/application-development-using-openroad/15649-session-table-does-not-exist.html有一個說明「會議表只能從創建它們的數據庫會話,它們在會話結束時被銷燬「 – Eralper

回答

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'; 
1

在Ingres SQL語法UPDATE ... 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' 

這是等價的。

1

您不能在更新目標中使用關聯名稱。將set m.class_code='new cod'更改爲set class_code='new cod',它將運行。

+0

該語法在Ingres中有效。 http://docs.actian.com/#page/Ing102_SQLRef%2FSQLRef_Body.1.1232.htm%23 –