繁体   English   中英

MySQL:将另一个表中的值插入一列

[英]MySQL: insert values from another table into one column

我想使用 MySQL 将项目从一个表移动到另一个表。

这是我目前使用的:

INSERT INTO items_rooms (item_id, room_id,x,y,n)  
SELECT id, room_id,x,y,z
  FROM `items_phoenix`

这有效,但是我想将多个值插入一列而不是不同列中的每个值。

例如:

在表 items_rooms 中,我希望将 items_phoenix 中的值 x 和 y 放入 items_rooms 中的一列。

如果 x = 5 和 y = 2,我可以像这样将它保存到 items_rooms 中:一列:5.2 而不是每个值的不同列?

对不起,如果这令人困惑!

您可以在 SELECT 列列表中使用表达式。 只要选择列表中的列和目标表中的列在数量和数据类型上匹配,您就可以执行以下操作:

INSERT INTO items_rooms (item_id, room_id, x_dot_y, n)  
SELECT id, room_id, CONCAT(x,'.',y), z
  FROM `items_phoenix`

您可以对简单情况使用串联,例如:

INSERT INTO items_rooms (
  item_id,
  room_id,
  x_and_y,
  n)
SELECT
  id,
  room_id,
  CONCAT(x, '.', y),
  z
FROM `items_phoenix`

是的,如果该列可以存储文本信息

只需CONCATCONCAT_WS

INSERT INTO items_rooms ( item_id, room_id, my_value, n )
SELECT id, room_id, CONCAT_WS( '.', x, y ), z
FROM `items_phoenix`

SQL小提琴演示

你绝对可以做到这一点。 请参阅有关此问题的有用答案。 但是,您应该考虑这是否是一个好主意。 一旦您将不同的列非规范化为一列中的某种字符串表达式,您就创建了一些非常难以维护和查询的东西。 这样做会使您的数据对您自己的可用性降低。

$table_To_Get_From = mysql_query("SELECT * FROM items_phoenix (id, room_id,x,y,z)");
if($table_To_Get_From){
    $table = mysql_fetch_assoc($table_To_Get_From);
    $values = array($table['id'],$table['room_id'],$table['x'],$table['y'],$table['z']);
    mysql_query("INSERT INTO items_rooms (item_id, room_id,x,y,n)  
        VALUES ($values[0],$values[1],$values[2],$values[3],$value[4])");
}

我没有把它们做成字符串,所以你可能需要使用 '$values[num]'

如果有任何值,这将按照您的需要插入它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM