제목 | mysql 에서 두개 이상의 테이블을 하나로 합치려고 합니다. | ||
---|---|---|---|
글쓴이 | 람이 | 작성시각 | 2015/09/10 09:57:30 |
|
|||
두개의 테이블을 합칠 경우 중복되는 unique 필드의 값을 없애거나 변경하여 저장되도록 할 수 있을까요 ? INSERT INTO `wiz_product2_new` select * from ( select * from `wiz_product2_mode_old` union all select * from `wiz_product2_hanjin_old` ) as dt |
|||
다음글 | 분산 서버에 관해 조언좀 부탁드리겠습니다. (4) | ||
이전글 | 오랫만입니다... mysql 질문요... (6) | ||
한대승(불의회상)
/
2015/09/10 10:04:06 /
추천
0
union 은 중복된 행을 제거 하니 중복된 행도 집어 넣으려면 union all 을 사용해 보세요.
|
람이
/
2015/09/10 10:13:08 /
추천
0
한대승(불의회상) 님 보시다 시피 union all 을 했지만, unique key 필드로 인해서 인지 앞단의 데이타만 들어가고 뒤의 union all 한 데이타는 들어가질 못해서요... ㅠ.ㅜ
|
들국화
/
2015/09/10 10:28:17 /
추천
0
unique 필드가 pk 인가요?
유니크 키가 바뀌어도 된다면 위 값을 union all 할때 unique 를 빼고 union 한 다음에 정렬해서 inert 하세요. 유니크 키는 규칙에 맞게 생성하세요. |
한대승(불의회상)
/
2015/09/10 10:38:28 /
추천
0
unique key가 문제라면 컬럼들을 주욱 나열하고 auto_increment를 대신 할 NULL을 집어넣어야 한다능.. ㅋㅋㅋㅋ
|
들국화
/
2015/09/10 12:43:46 /
추천
0
auto_incremant 가 아닐수도 있지 않을까요? ^^ 그냥 unique 라고 했으니.
|
한대승(불의회상)
/
2015/09/10 13:23:38 /
추천
0
@들국화 네 그럴수 있겠네요 ^^
보통 mysql 사용하면 일반적으로 primary key에 auto_increment를 집어 넣어서.. 이넘의 선입견.. ^^;;;; |
들국화
/
2015/09/10 13:33:27 /
추천
0
@한대승 mysql의 innodb는 pk를 안만들면 내부적으로 보이지 않는 pk를 가지는걸로 알고 있습니다.
오래전에 본거라 기억이 가물 가물 하긴 하네요. 그래서 명시적으로 pk를 잡아 주는게 좋은지 아닌지 한동안 고민을 했던적도 많았거든요. |
람이
/
2015/09/10 15:19:15 /
추천
0
들국화, 한대승(불의회상) 님 모두 관심 감사드립니다.
업체 미팅 하고 왔더니 이리 많은 글이. ㅋ 한대승님 말처럼 auto_increment 에 primary_key 맞습니다. 현재 구글링 하면서 나름의 해결책으로 아래와 같이 하고 있습니다... 이게 정답인지는 모릅니다 ㅋ 일단 충돌은 없네요... mysql_query("CREATE TABLE `wiz_prd_group_new` LIKE `wiz_prd_group` "); $r3 = mysql_query("SHOW TABLES LIKE 'wiz_prd_group_new' "); if($r3) { mysql_query(" INSERT INTO `wiz_prd_group_new` select * from ( select '', catcode,depthno,priorno01,priorno02,priorno03,grp_name,grp_use,grp_img,grp_img_over,grp_subimg,grp_subimg_type,grp_skin,grp_num,grp_width,grp_height,grp_path from `wiz_prd_group_mode_old` UNION select '', catcode,depthno,priorno01,priorno02,priorno03,grp_name,grp_use,grp_img,grp_img_over,grp_subimg,grp_subimg_type,grp_skin,grp_num,grp_width,grp_height,grp_path from `wiz_prd_group_hanjin_old` ) as dt "); } |
한대승(불의회상)
/
2015/09/10 15:30:12 /
추천
0
'' 나 NULL 이나 값이 없으면 자동증가 값으로 대체 하니 정답중 하나 입니다.
|