[SQL] 동일한 사용자 이름의 다른 테이블에서 업데이트 테이블 값
SQL동일한 사용자 이름의 다른 테이블에서 업데이트 테이블 값
나는 _ 이름이라는 동일한 열, 말 table_a, table_b으로, 두 개의 테이블이있다.
나는 _ 이름이 동일 table_b1, column_a_1, column_a_2 각각 어떻게 SQL 문에 그것을 할에, table_b, column_b_1, column_b2 복사, 싶으십니까?
해결법
-
==============================
1.긴로서 당신은이 확실히 작동합니다 장소에 적절한 인덱스를 가지고 :
긴로서 당신은이 확실히 작동합니다 장소에 적절한 인덱스를 가지고 :
UPDATE table_a SET column_a_1 = (SELECT table_b.column_b_1 FROM table_b WHERE table_b.user_name = table_a.user_name ) , column_a_2 = (SELECT table_b.column_b_2 FROM table_b WHERE table_b.user_name = table_a.user_name ) WHERE EXISTS ( SELECT * FROM table_b WHERE table_b.user_name = table_a.user_name )
sqlite3를에서 UPDATE 다른 RDBMS보다이 조금 더 일을하게 절에서 지원하지 않습니다.
성능이 만족스럽지 않은 경우, 또 다른 옵션은 선택을 사용하여 table_a에 대한 새로운 행을 구축하고 임시 테이블에 table_a에 가입 할 수 있습니다. 그런 다음 임시에서 table_a하고 다시 채 웁니다에서 데이터를 삭제합니다.
-
==============================
2.SQLite는 버전 3.15 UPDATE 구문에서 시작하는 것은 열 이름 목록을 인정 다음 SET 일부 쿼리는 다음과 같이 쓸 수 있도록
SQLite는 버전 3.15 UPDATE 구문에서 시작하는 것은 열 이름 목록을 인정 다음 SET 일부 쿼리는 다음과 같이 쓸 수 있도록
UPDATE table_a SET (column_a_1, column_a_2) = (SELECT table_b.column_b_1, table_b.column_b_2 FROM table_b WHERE table_b.user_name = table_a.user_name ) WHERE EXISTS ( SELECT * FROM table_b WHERE table_b.user_name = table_a.user_name )
이는 또한 빠른뿐만 아니라 짧은하지만입니다
-
==============================
3.다른 테이블에서 갱신 한 테이블에 훨씬 더 나은 솔루션이 있습니다 :
다른 테이블에서 갱신 한 테이블에 훨씬 더 나은 솔루션이 있습니다 :
;WITH a AS ( SELECT song_id, artist_id FROM online_performance ) UPDATE record_performance SET op_song_id=(SELECT song_id FROM a), op_artist_id=(SELECT artist_id FROM a) ;
from https://stackoverflow.com/questions/3845718/update-table-values-from-another-table-with-the-same-user-name by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 변환 UTF-8 SQL 데이터베이스에 문자열 클래식 ASP (0) | 2020.03.18 |
---|---|
[SQL] SQL 분할 쉼표로 구분 행 [중복] (0) | 2020.03.18 |
[SQL] 자르기 (하지 라운드) SQL Server의 소수점 (0) | 2020.03.18 |
[SQL] 매개 변수는 정말 충분히 SQL 삽입을 방지 할 수 있습니까? (0) | 2020.03.18 |
[SQL] SQLite는 날짜 시간 비교 (0) | 2020.03.18 |