2011-03-11 4 views
0

문제 :MySQL SQL : 정규화되지 않은 테이블에서 JOIN을 수행하는 동안 업데이트 하시겠습니까?

두 개의 테이블, 동물 테이블과 자리 표시 자 테이블이 있습니다. 적절한 공백이 채워지도록 animal table에서 업데이트를하고 싶습니다. 동물 테이블이 제대로 정상화되지 않았습니다.

순수 MySQL SQL 문을 사용하여 이것을 수행 할 수 있으며 프로그램이나 스크립트 내에서 루핑하지 않아도됩니까?

예 :

== 여기서 여기서 == == "이전"

animal   placeholder 
1 | dog   1 | dog | log 
1 | snog   2 | cat | mat 
1 | _blank_  3 | bird | word 
2 | cat 
2 | sat 
2 | _blank_ 
3 | bird 
3 | heard 
3 | _blank_ 

인 == "후"

animal   placeholder 
1 | dog   1 | dog | log 
1 | snog   2 | cat | mat 
1 | log   3 | bird | word 
2 | cat 
2 | sat 
2 | mat 
3 | bird 
3 | heard 
3 | word 

질문 :

죄송합니다.을 "before"를 "after"로 변환하기 위해 UPDATE를 사용할 MySQL SQL 문을 생성 하시겠습니까?

쿼리에서 자리 표시자를 넣을 정확한 위치를 알아야하기 때문에 JOIN을 사용해야한다고 가정합니다.

== 해결책 ==

UPDATE 동물 SET 이름 = (자리 FROM SELECT 명사 WHERE ( a.id = ID ) ) a.name가 null;

+0

묻는 질문입니다. – dreftymac

답변

1

이와 유사한 아마 뭔가 : 잘 알려진 오픈 소스 프로젝트에서 틀에 얽매이지 않는 데이터 테이블 구조의 비 표준화 된 데이터를 처리

update animal a 
set name = (select col2 from placeholder where a.name is null and a.id = id) 
+0

거의,하지만 이것은 어떤 이유로 든 dog/snog, cat/sat 및 bird/hear를 NULL로 대체하기 때문에 작동하지 않습니다. 즉, UPDATE는 의도 한 세 개가 아닌 모든 행에 영향을줍니다. 그래도 도와 ​​줘서 고마워. – dreftymac

+0

UPDATE 동물 SET 이름 = (자리 FROM SELECT 명사 WHERE ( a.id = ID ) ) a.name가 null; 이제는 WHERE 절을 수정해야합니다. 다시 한번 감사드립니다. – dreftymac

관련 문제