2009-10-07 5 views
0

하나의 데이터베이스에 테이블이 있는데이 db x를 호출합니다. 나는 다른 데이터베이스를 가지고 있는데, y라고 부른다. x.some_table에서 y.some_table으로 데이터를 복사하고 싶습니다. 데이터베이스의 일부 열이 의미가 없으므로 테이블의 정확한 복사본을 만들고 싶지 않습니다. b. 다음 쿼리를 사용합니다 :다른 db에서 중첩 된 select mysql 삽입 double 값을 자릅니다.

INSERT INTO y.some_table (a_field) SELECT a_field FROM x.some_table; 

a_filed는 두 테이블 모두 DOULBE (17,0)로 정의됩니다. 내가 이것을 실행하면 : USE y; SELECT a_field FROM x;

그런 다음 전체 값으로 출력됩니다 - 부동 소수점자를 자르지 않습니다. 그러나, 내가 보여준 첫 번째 쿼리를 사용하여 삽입 한 후, y의 some_table.a_field에 정수 만 남게됩니다. 부동 소수점 나머지는 잘립니다.

내가 뭘 잘못하고 있니? 감사.

답변

1

열이 두 테이블 모두에서 DOUBLE (17,0)로 정의되어 있습니까? 10 진수 다음에 0으로 총 17 자리를 지정하지 않습니까? 그렇다면 표 x에서 선택하십시오 또한 소수점 이하 자릿수가 0이어야합니다. 다르게 정의 된 x가 DOUBLE (17,6)이라고 말하면 DOUBLE (17,0)에 삽입하려고하면 십진법이 잘 리게됩니다.

+0

감사합니다. 그게 문제 야. 두 가지 모두 그렇게 정의 되었기 때문에 여기를 보려고 생각하지 않았습니다. 아마도 내 프로그램은 어떤 스키마를보고 있는지 혼란 스러울 것입니다. 나는 커맨드 라인을 확인하고 볼 것이다. 감사. –

0

잘라 내기를 일으키는 지 확실하지 않습니다. 플로팅 타입을 올바르게 설정했는지 확인할 수 있습니다 .. 테이블 정의가 괜찮다고 생각하면 스크립트를 만들어 테스트 할 수 있습니다 (예 : ). ~

$sql = "SELECT your_select_field FROM your_table"; 
$result = mysql_query($sql); 

while($row = mysql_fetch_assoc($result)) { 
    $sql_ins = "INSERT INTO your_insert_table SET your_field = '".$row['your_select_field']."' "; 
    $res_ins = mysql_query($sql_ins); 
} 
관련 문제