7

我想使用 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 而不是每个值的不同列?

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

4

5 回答 5

15

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

INSERT INTO items_rooms (item_id, room_id, x_dot_y, n)  
SELECT id, room_id, CONCAT(x,'.',y), z
  FROM `items_phoenix`
于 2013-01-09T00:48:48.717 回答
0

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

INSERT INTO items_rooms (
  item_id,
  room_id,
  x_and_y,
  n)
SELECT
  id,
  room_id,
  CONCAT(x, '.', y),
  z
FROM `items_phoenix`
于 2013-01-09T00:49:08.370 回答
0

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

只是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 小提琴演示

于 2013-01-09T00:50:35.807 回答
0

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

于 2013-01-09T00:51:34.483 回答
-2
$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]'

如果有任何值,这将像您想要的那样插入它。

于 2013-01-09T00:53:14.680 回答