Oracle 之update

Jun 07, 2016 pm 05:33 PM

1、根据条件更新表里的某个字段值,如下:update test t set t.b_salary =case when t.b_id = 5 then 5000 when t.b_id = 6 the

1、根据条件更新表里的某个字段值,如下:
update test t set t.b_salary =
case when t.b_id = 5 then 5000
    when t.b_id = 6 then 6000
    when t.b_id = 7 then 7000
end
where t.b_id in (5,6,7)
说明: where条件部分一定要把记录限制为只需要更新的部分,否则其他部分会被更新为空。


2、2表关联update某个字段的
a)、一对一关联
update test1 t set t.a_salary =
( select a.b_salary from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )
;
commit;


b)、一对多关联
(1)、目标表一个ID存在多条记录,源头是一个ID存一条记录,此种场景和一对一没有区别
update test1 t set t.a_salary =
( select a.b_salary from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )
;
commit;


(2)、目标表一个ID一条记录,源头是一个ID存在多条记录
报错ora-01427 :单行子查询返回多条记录
本质上是目标表在源表根据关联ID去找的时候,一个ID找到了多条记录,返回给目标表的一条记录里目标值为多个。
若返回多个记录值都是一样的,返回任意一条都可以,则此时对返回值加上max,写法如下:


update test1 t set t.a_salary =
( select max(a.b_salary) from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )


c)、多对多关联
报错ora-01427 :单行子查询返回多条记录
本质上是目标表在源表根据关联ID去找的时候,一个ID找到了多条记录,返回给目标表的一条记录里目标值为多个。
若返回多个记录值都是一样的,返回任意一条都可以,则此时对返回值加上max,写法如下:
update test1 t set t.a_salary =
( select max(a.b_salary) from test a where a.b_id = t.a_id
)
where exists (select 1 from test a where a.b_id = t.a_id )
;


commit;


说明: exists的作用,防止更新没有关联上的记录。若不加exists ,则目标表中无关记录会被置空。故这个exists一定要加上。


总结:
  1、对于更新表内容,一定要把更新内容限制在只要更新的部分,where部分一定要有。


  2、2表关联update的时候,目标表根据关联ID从源表去找记录的时候,,存在ID重复的记录和目标表没有关系,要注意源表存在ID重复的记录。


 对于大表关联update,普通的写法,根本跑不动,百度了一下,根据rowid来更新,果然可以跑动。方法如下:

--t1 为源表


--t2 为要更新的目标表


declare
 cursor cur is
  select
    a.t1_name, b.rowid row_id
    from t1 a, t2 b
    where a.t1_id = b.t2_id
    order by b.rowid;


 v_counter number;

 


begin
 v_counter := 0;
 for row in cur loop
  update t2 t
      set t.t2_name = row.t1_name
    where rowid = row.row_id;
  v_counter := v_counter + 1;
  if (v_counter >= 1000) then
    commit;
    v_counter := 0;
  end if;
 end loop;
 commit;
end;

相关阅读:

Oracle update执行计划原理解析与优化

Oracle 中 update nowait 的使用方法

Oracle存储过程使用实例之update的使用

Oracle update关联表的思路总结 

Oracle for update of 和 for update区别

linux

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

상위 10 개 글로벌 디지털 가상 통화 거래 플랫폼 순위 (2025 권위있는 순위) 상위 10 개 글로벌 디지털 가상 통화 거래 플랫폼 순위 (2025 권위있는 순위) Mar 06, 2025 pm 04:36 PM

2025 년에 Global Digital Virtual Currency Trading Platform은 2025 년에 트랜잭션 볼륨, 보안 및 사용자 경험과 같은 지표를 기반으로 전 세계 10 대 디지털 가상 통화 거래 플랫폼을 권위있게 발표합니다. OKX는 강력한 기술 강점과 글로벌 운영 전략으로 1 위를 차지했으며 Binance는 높은 유동성과 낮은 수수료와 밀접한 관련이 있습니다. Gate.io, Coinbase 및 Kraken과 같은 플랫폼은 각각의 장점과 함께 최전선에 있습니다. 이 목록에는 Huobi, Kucoin, Bitfinex, Crypto.com 및 Gemini와 같은 거래 플랫폼이 각각 고유 한 특성을 지니고 있지만 투자는 신중해야합니다. 플랫폼을 선택하려면 보안, 유동성, 수수료, 사용자 경험, 통화 선택 및 규제 준수와 같은 요소를 고려해야합니다.

숫자의 가장 큰 소인수를 찾는 C 프로그램 숫자의 가장 큰 소인수를 찾는 C 프로그램 Aug 27, 2023 am 10:09 AM

소인수−수론에서 양의 정수의 소인수는 정확히 소수로 나누어지는 소수입니다. 이 숫자를 찾는 과정을 정수 인수분해 또는 소인수분해라고 합니다. 예−288의 소인수는 다음과 같습니다: 288=2x2x2x2x2

2025 년 통화 서클의 10 대 교환 최신 디지털 통화 앱 순위 2025 년 통화 서클의 10 대 교환 최신 디지털 통화 앱 순위 Feb 27, 2025 pm 06:33 PM

상위 10 개의 가상 통화 거래 플랫폼 순위 (2025 년 최신) : BINANCE : 글로벌 리더, 높은 유동성 및 규제가 주목을 끌었습니다. OKX : 대규모 사용자 기반, 여러 통화를 지원하며 레버리지 거래를 제공합니다. Gate.io : 다양한 화폐 통화 지불 방법을 갖춘 선임 교환으로 다양한 거래 쌍 및 투자 제품을 제공합니다. BITGET : 파생 상품 교환, 높은 유동성, 낮은 수수료. HUOBI : 다양한 통화 및 거래 쌍을 지원하는 오래된 교환. 코인베이스 : 잘 알려진 미국 교환으로 엄격하게 규제되었습니다. Phemex 등.

상위 10 개 디지털 통화 거래 플랫폼 상위 10 개 디지털 통화 거래 플랫폼의 최신 목록 상위 10 개 디지털 통화 거래 플랫폼 상위 10 개 디지털 통화 거래 플랫폼의 최신 목록 Mar 17, 2025 pm 05:57 PM

상위 10 개 디지털 통화 거래 플랫폼 : 1. OKX, 2. BINANCE, 3. GATE.IO, 4. HUOBI GLOBAL, 5. KRAKEN, 6. COINBASE, 7. KUCOIN, 8. BITFINEX, 9. CRYPTO.COM, 10. GEMINI, 자체 특성을 보유하고 있으며,이 교환은 보안, 요소, 보안, 사용자를 기반으로하는 플랫폼을 선택할 수 있습니다.

디지털 통화 앱을위한 상위 10 개 트레이딩 플랫폼, 정기 통화 추측 플랫폼 앱 권장 사항 디지털 통화 앱을위한 상위 10 개 트레이딩 플랫폼, 정기 통화 추측 플랫폼 앱 권장 사항 Mar 07, 2025 pm 06:51 PM

이 기사는 10 개의 디지털 거래 앱을 권장한다. 플랫폼을 선택할 때 보안, 유동성, 거래 수수료, 통화 선택, 사용자 인터페이스, 고객 서비스 지원 및 규제 준수와 같은 요소를 고려하고 위험을 신중하게 평가하고 맹목적으로 추세를 따르지 않아야합니다.

세계 10 대 10 가상 통화 거래 플랫폼 앱 진짜 다운로드 및 설치 자습서 세계 10 대 10 가상 통화 거래 플랫폼 앱 진짜 다운로드 및 설치 자습서 Mar 12, 2025 pm 05:33 PM

이 기사는 Binance, Okx, Gate.io, Huobi Global, Coinbase, Kucoin, Kraken 및 Bitfinex와 같은 주류 디지털 통화 거래 플랫폼에 대한 Android 및 Apple Mobile 앱 다운로드 방법을 제공합니다. Android 사용자이든 Apple 사용자이든 상관없이 해당 플랫폼의 공식 앱 다운로드 링크를 쉽게 찾아 단계에 따라 설치를 완료 할 수 있습니다. 이 기사는 해당 공식 웹 사이트 또는 앱 스토어에서 검색 및 다운로드에 대한 자세한 지침을 제공하며 Android에 APK 파일을 설치하는 특별 단계에 대한 지침을 제공하여 사용자가 빠르고 쉽게 다운로드하여 사용할 수 있습니다.

신뢰할 수있는 디지털 통화 플랫폼은 무엇입니까? 신뢰할 수있는 디지털 통화 플랫폼은 무엇입니까? Mar 17, 2025 pm 05:45 PM

신뢰할 수있는 디지털 통화 플랫폼은 다음과 같습니다. 1. OKX, 2. BINANCE, 3. GATE.IO, 4. HUOBI GLOBAL, 5. COINBASE, 7. BITFINEX, 9. CRYPTO.com, GEMINI는 이들 교환을 기반으로하는 플랫폼을 선택할 수 있습니다.

상위 10 개 디지털 통화 앱 거래 플랫폼 Top10 가상 통화 앱 2025 순위 상위 10 개 디지털 통화 앱 거래 플랫폼 Top10 가상 통화 앱 2025 순위 Mar 13, 2025 pm 07:00 PM

상위 10 개는 다음과 같습니다. 순위는 플랫폼 유동성, 통화 선택, 보안, 사용자 경험, 수수료 및 규정 준수와 같은 포괄적 인 고려 사항을 기반으로하지만 투자는 신중하고 자신의 위험에 처해 있어야합니다.

See all articles