2017-01-20 1 views
0
update users 
set users.przetwarzanie = historia_panel.zmiana_z 
from historia_panel 
where 
     users.user_number like historia_panel.user_number and 
     historia_panel.zmienna_zmieniana like '%przetwarzanie%' and 
     historia_panel.przyczyna like '%użytkownika%'; 

그리고 오류 : 내가 지정한 조건 historia_panel 테이블에서 값 users 테이블을 업데이트 할이 쿼리에서postgreSQL에서 select에서 update를 사용하는 방법은 무엇입니까?

The error that is in console: 
ERROR: column "users" of relation "users" does not exist 
LINE 2: set users.przetwarzanie = historia_panel.zmiana_z 

. 여러 가지 방법을 시도했지만 인터넷에서 발견 된 예제는 없습니다.

Actualy 내가 I'am 잘못하고 무슨 생각을 ...이 없다

답변

2

오류 당신이 set 절에 열 이름을 규정 할 수 없습니다 제안했다; 실제로 이미 말한 이후로해야 할 일이 없어야합니다. update users

이것이 유일한 문제인지 여부는 빠른 눈으로는 말할 수 없지만 그게 오류 메시지가 말하는 것입니다. 따라서 set users.przetwarzanie = historia_panel.zmiana_zset przetwarzanie = historia_panel.zmiana_z으로 변경하고 결과를 확인하십시오.

+0

'ERROR : "przetwarzanie"열은 정수형이지만 표현식은 가변 문자 유형입니다. LINE 2 : przetwarzanie = historia_panel.zmiana_z'을 설정하십시오. 문제는'update users'라고 생각합니다. 그것은 하나의'FROM' 문 또는 이것과 비슷한 것이어야합니다. 그리고 아직도이 오류를 해결하는 방법을 모르겠지만 대답을 주셔서 감사합니다;) –

+2

문제가 '사용자 업데이트'라고 생각하는 이유를 잘 모릅니다. 그것은 오류 메시지가 말하는 것과 전혀 다릅니다. 문자 데이터를 정수로 지정한다고합니다. 우선, 처리가 충분히 진행되어서 계속 찾고있는 문제 (쿼리 구조의 전반적인 문제)가 존재하지 않는다는 것을 의미합니다. 둘째, 데이터를 알아야합니다. 오류는 pg가 숫자를 받아들이는 열에 'HELLO'와 같은 값을 할당하라는 지시를 받으면 수행 할 작업을 추측 할 수있는 위치에 놓기를 원하지 않기 때문에 발생합니다. 정수에 varchar를 할당하면 do –

+0

네가 맞다. ;)'historia_panel.zmienna_z'의 타입을'int'에':: int : –

0

다른 테이블의 두 열 사이에 호환되지 않는 타이플이있는 것이 문제였습니다. 나는 라인 set przetwarzanie = historia_panel.zmiana_z::int을 추가했고 이제는 작동한다.

+1

'을 추가하여 재 해석했습니다. 실제 질문은 : 왜 당신은'varchar' 컬럼에 숫자를 저장하고 있습니까? –

+0

historyia_panel은 사용자가 계정에서 변경 한 내용을 기록한 로그이므로 varchar를 사용하고 있습니다. 사용자는 예를 들어 사용자 이름을 변경할 수 있으며이 변경 사항은'historia_panel'에 저장됩니다. 나는이 테이블을 만든 사람이 아니지만 'historia_panel'에서 일부 변경 사항을 복원하고 이러한 변경 사항을'users' 테이블에 적용해야하는 사람입니다. ;) –