sqlite 한 테이블에서 다른 테이블로 데이터 복사
SQLITE
동일한 필드가있는 "Source"및 "Destination"테이블이 2 개 있습니다. ID 및 COUNTRY, 둘 다 공통되지 않는 다른 필드도 있습니다.
Source.Country 값을 ID에 조인이있는 Destination.Country에 복사해야합니다.
제 삶을 위해 저는 Sqlite가 이것을하게 만들 수 없습니다.
SQL Server 등에서 이것은 매우 간단한 작업입니다.
아이디어?
INSERT INTO Destination SELECT * FROM Source;
공식적인 정의는 SQLite가 이해 한 SQL : INSERT 를 참조하십시오 .
두 테이블에 이미 데이터가 있고 일부 조건에 따라 테이블 열 값을 업데이트하려면 다음을 사용하십시오.
UPDATE Table1 set Name=(select t2.Name from Table2 t2 where t2.id=Table1.id)
나는 이것과 씨름 해 왔고 다른 옵션이 있다는 것을 알고 있지만 가장 안전한 패턴은 다음과 같다는 결론에 도달했습니다.
create table destination_old as select * from destination;
drop table destination;
create table destination as select
d.*, s.country
from destination_old d left join source s
on d.id=s.id;
destination
변경하기 전에 복사본이 있기 때문에 안전 합니다. 조인이있는 업데이트 문은 강력하지만 약간 위험하기 때문에 SQLite에 포함되지 않은 것으로 생각됩니다.
위의 패턴을 사용하면 두 개의 country
필드가 생성됩니다. 검색하려는 모든 열을 명시 적으로 지정 하고 필드 가 null 인 경우 값을 검색하는 데 destination_old
사용하여 coalesce
이를 방지 할 수 있습니다 . 예를 들면 다음과 같습니다.destination_old
country
source
create table destination as select
d.field1, d.field2,...,coalesce(s.country,d.country) country
from destination_old d left join source s
on d.id=s.id;
이와 같은 데이터를 복사하는 경우 데이터 모델이 완전히 정규화되지 않았 음을 의미 할 것입니다. 하나의 국가 목록을 만들고 JOIN을 더 할 수 있습니까?
JOIN 대신 가상 테이블을 사용할 수도 있으므로 시스템에서 쿼리를 변경할 필요가 없습니다.
참고 URL : https://stackoverflow.com/questions/4291165/sqlite-copy-data-from-one-table-to-another
'IT박스' 카테고리의 다른 글
'?'는 무엇입니까? (0) | 2020.11.17 |
---|---|
Android EditText에서 수직 콘텐츠 정렬 (0) | 2020.11.17 |
CouchDB 복제 프로토콜은 무엇입니까? (0) | 2020.11.17 |
HTML 일반 제어 div에 CSS 클래스를 추가하는 방법은 무엇입니까? (0) | 2020.11.17 |
INSERT… RETURNING의 반환 값을 다른 INSERT에서 사용할 수 있습니까? (0) | 2020.11.17 |