2009-09-24 2 views
1

ID 열과 다른 열이있는 SQL 테이블이 있습니다. 두 번째 테이블에는 ID 열도 있습니다. 이제 첫 번째 테이블의 두 번째 테이블 행에 삽입하려고하지만 이미 그 테이블에 나타나지 않는 행만 삽입하려고합니다. 나는 두 번째 테이블을 두 가지의 "합"이 되길 원하지만 중복되지는 않습니다.두 테이블에서 데이터 선택

첫 번째 것은 labels이고 두 번째는 tags입니다. 둘 다 label 열이 있습니다. 나는 태그 라벨이 이미 채워진 일부 데이터이기 때문에, labels 테이블이 아닌 tags에에있는 모든 라벨 태그에 labels.label, "", "", "", "N", "N/A" 을 삽입 할.

내가

INSERT INTO tags SELECT labels.label, "", "", "", "N", "N/A" FROM labels, tags 
WHERE labels.label != tags.label 

그러나 나는 시도했다 많은 중복을 얻고 있습니다. 동일한 내용이 적용됩니다

INSERT INTO tags SELECT labels.label, "", "", "", "N", "N/A" FROM labels 
JOIN tags ON labels.label != tags.label 

아마도 저는 생각하지 못합니다. 왜냐하면 저는 SQL이 새로 도입 되었기 때문입니다.

어떻게하면됩니까? 저는 파이썬에서 SQLite를 사용하고 있습니다.

건배, 톰

답변

2

현재 시작할 수

insert into t2 (col1, col2 ...) 
select colx, coly, ... from t1 
where t1.ID not in 
(select ID from t2) 
) 

구문에 삽입은 두 번째 테이블 (T2)가 이미 존재한다고 가정합니다. 새 테이블을 만들려면 col1, col2 ...를 NewTable로 선택합니다.

EDIT : "있음"에서 "있음"b/c로 변경됨 SQL Lite는 "in"을 선호합니다.

+0

sqlite3.OperationalError : "EXISTS"근처 : 구문 오류 – uolot

+0

하지만 그래, 두 번째 테이블이 존재합니다! – uolot

관련 문제