반응형
CTE를 사용하여 표 업데이트
오라클 관련해서 비슷한 질문을 했는데 DBMS마다 다릅니다.
https://dbfiddle.uk/i2wN57xq 에 샘플 표가 있습니다. CTE의 데이터를 사용하여 표를 업데이트하고 싶습니다.이와 같은 것:
with vars as (select 5 as n from dual)
update test set data=data*vars.n, more=more*vars.n;
물론 이것은 효과가 없습니다.CTE의 데이터를 어떻게 사용할 수 있습니까?UPDATE
진술서?
참고:
- 샘플이 사소한 것인 건 알지만, 정확한 기술을 찾고 있을 뿐입니다.
- 대부분의 검색은 CTE 자체를 업데이트하려는 시도로 이어집니다.저는 그렇게 하고 싶지 않습니다, 그냥 CTE를 데이터로 사용하세요.
PostgreSQL 및 SQL Server에 대한 솔루션을 찾았습니다.Oracle의 경우 하위 쿼리를 사용하게 되었습니다. 하위 쿼리에서 여러 결과를 얻을 수 있기 때문에 괜찮습니다.CTE와 함께 작동하지 않는다면 저는 그런 것에 만족할 것입니다.
넌 할 수 있다.CROSS
테이블과 테이블을 연결합니다.CTE
에서UPDATE
MySql에 대한 문:
WITH vars AS (SELECT 5 AS n)
UPDATE test t
CROSS JOIN vars v
SET t.data = t.data * v.n,
t.more = t.more * v.n;
데모 보기
마리아를 위하여DB:
UPDATE test t
CROSS JOIN (
WITH vars AS (SELECT 5 AS n)
SELECT * FROM vars
) v
SET t.data = t.data * v.n,
t.more = t.more * v.n;
데모를 참조하십시오.
또는 더 단순함(CTE 없음):
UPDATE test t
CROSS JOIN (SELECT 5 AS n) v
SET t.data = t.data * v.n,
t.more = t.more * v.n;
데모를 참조하십시오.
언급URL : https://stackoverflow.com/questions/73754072/updating-a-table-using-a-cte
반응형
'programing' 카테고리의 다른 글
문자열에서 고유 식별자로 변환할 때 변환 실패 - 두 개의 GUID (0) | 2023.06.26 |
---|---|
Oracle ROWID를 변경하는 원인은 무엇입니까? (0) | 2023.06.26 |
오라클 DB에 마지막으로 삽입된 레코드의 ID 가져오기 (0) | 2023.06.26 |
꺼내기 요청으로 병합을 취소하시겠습니까? (0) | 2023.06.26 |
복잡한 Vuex 저장소에 의존하고 다른 구성 요소를 확장하는 Vue.js 구성 요소를 유닛 테스트하려면 어떻게 해야 합니까? (0) | 2023.06.26 |