Postgre의 하위 쿼리에서 업데이트 또는 삽입(여러 행 및 열)SQL
저는 포스트그레스에서 이와 같은 일을 하려고 합니다.
UPDATE table1 SET (col1, col2) = (SELECT col2, col3 FROM othertable WHERE othertable.col1 = 123);INSERT INTO table1 (col1, col2) VALUES (SELECT col1, col2 FROM othertable)
그러나 문서에 언급된 것처럼 postgres 9.0에서도 포인트 1은 불가능합니다(http://www.postgresql.org/docs/9.0/static/sql-update.html) .
또한 포인트 2가 작동하지 않는 것 같습니다.다음 오류가 발생했습니다. 하위 쿼리는 열을 하나만 반환해야 합니다.
누군가 나를 위한 해결책이 있기를 바랍니다.그렇지 않으면 쿼리에 시간이 많이 걸릴 것입니다. :(
참고: 다른 응용 프로그램이 준비된 데이터를 쉽게 가져올 수 있도록 여러 테이블에서 다른 열을 선택하여 임시 테이블에 저장하려고 합니다.
업데이트용
사용:
UPDATE table1
SET col1 = othertable.col2,
col2 = othertable.col3
FROM othertable
WHERE othertable.col1 = 123;
INSERT의 경우
사용:
INSERT INTO table1 (col1, col2)
SELECT col1, col2
FROM othertable
당신은 그것이 필요하지 않습니다.VALUESSELECT를 사용하여 INSERT 값을 채우는 경우 구문을 선택합니다.
OMG 포니의 대답은 완벽하게 작동하지만, 만약 당신이 좀 더 복잡한 것이 필요하다면, 여기 약간 더 고급 업데이트 쿼리의 예가 있습니다.
UPDATE table1
SET col1 = subquery.col2,
col2 = subquery.col3
FROM (
SELECT t2.foo as col1, t3.bar as col2, t3.foobar as col3
FROM table2 t2 INNER JOIN table3 t3 ON t2.id = t3.t2_id
WHERE t2.created_at > '2016-01-01'
) AS subquery
WHERE table1.id = subquery.col1;
UPDATE table1 SET (col1, col2) = (col2, col3) FROM othertable WHERE othertable.col1 = 123;
언급URL : https://stackoverflow.com/questions/3736732/update-or-insert-multiple-rows-and-columns-from-subquery-in-postgresql
'programing' 카테고리의 다른 글
| 윈도우즈 호스트 파일의 와일드카드 (0) | 2023.05.09 |
|---|---|
| 루비의 배열에서 중복 요소 제거 (0) | 2023.05.09 |
| MongoDB - 컬렉션 내부의 중첩된 항목을 쿼리하는 방법은 무엇입니까? (0) | 2023.05.09 |
| Linux/Unix Bash 스크립트는 어떻게 자체 PID를 가져올 수 있습니까? (0) | 2023.05.09 |
| Eclipse에서 특정 폴더 또는 파일을 유효성 검사에서 제외하는 방법은 무엇입니까? (0) | 2023.05.09 |