programing

CTE를 사용하여 표 업데이트

skycolor 2023. 6. 26. 21:12
반응형

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에서UPDATEMySql에 대한 문:

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

반응형