2016-10-12 6 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

안녕하세요 Andrey, 세션 테이블입니까? 그렇다면 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은 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 –