2009-10-07 17 views
0

我有一个表在一个数据库中,调用此db x。我有另一个数据库,称之为y。我想将数据从x.some_table复制到y.some_table。我不想做一个完整的表格副本,因为某些列在数据库b中没有意义。我使用以下查询:mysql插入嵌套选择从其他数据库截断双值

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;

然后我得到完整值的输出 - 没有浮点截断。但是,如果在使用我显示的第一个查询插入后,我的some_table.a_field中除了整数之外什么都没有。浮点剩余部分被截断。

我在做什么错?谢谢。

回答

1

您确定在这两个表中列被定义为DOUBLE(17,0)吗?小数点后面的数字是否指定了17个总数字?如果是这样,你从表中选择x也应该有0小数位。如果它在x中的定义与DOUBLE(17,6)不同,并且您试图将其插入到DOUBLE(17,0)中,那么小数点将被截断,我相信。

+0

谢谢。确切的问题。没有想到要看这里,因为两者都是这样定义的。也许我的程序对它正在查看的模式感到困惑。我会检查命令行并看看。谢谢。 – 2009-10-07 17:00:11

0

不知道是什么导致截断..你可以确保你正确设置浮动类型..如果你认为你的表定义是好的,你可以创建一个脚本来测试它 例如,在PHP中,你可以做类似 -

$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); 
} 
相关问题