복붙노트

[SQL] 동일한 사용자 이름의 다른 테이블에서 업데이트 테이블 값

SQL

동일한 사용자 이름의 다른 테이블에서 업데이트 테이블 값

나는 _ 이름이라는 동일한 열, 말 table_a, table_b으로, 두 개의 테이블이있다.

나는 _ 이름이 동일 table_b1, column_a_1, column_a_2 각각 어떻게 SQL 문에 그것을 할에, table_b, column_b_1, column_b2 복사, 싶으십니까?

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    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)
    
    ;
    
  4. from https://stackoverflow.com/questions/3845718/update-table-values-from-another-table-with-the-same-user-name by cc-by-sa and MIT license