我在一个数据库中有一个表,调用这个db x。我有另一个数据库,称之为y。我想将数据从x.some_table复制到y.some_table。我不想做表的精确副本,因为有些列在数据库b中没有意义。我使用以下查询:
INSERT INTO y.some_table (a_field) SELECT a_field FROM x.some_table;
两个表中的a_filed定义为DOULBE(17,0)。如果我运行这个: 使用y; SELECT a_field FROM x;
然后我得到带有完整值的输出 - 没有浮点截断。但是,如果在使用我显示的第一个查询插入后,我只得到y的some_table.a_field中的整数。浮点余数被截断。
我做错了什么?感谢。
答案 0 :(得分:1)
您确定两列中的列都定义为DOUBLE(17,0)吗?在小数点后是否指定17位总数为0?如果是这样,你从表中选择x也应该有0个小数位。如果它在x中的不同定义说DOUBLE(17,6)并且你试图将它插入DOUBLE(17,0)那么我相信小数将被截断。
答案 1 :(得分: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);
}