MYSQL将另一个表中的值插入一列

时间:2013-01-09 00:44:56

标签: mysql

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

这是我目前使用的:

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

这样可行,但我想在一列中插入多个值,而不是在不同列中插入每个值。

例如:

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

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

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

5 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分:0)

您可以将连接用于简单的情况,例如:

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

答案 2 :(得分: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 Fiddle DEMO

答案 3 :(得分:0)

你绝对可以这样做。请参阅有用的答案。但是,您应该考虑这是否是一个好主意。一旦将不同的列非规范化为一列中的某种字符串表达式,就会创建一些非常难以维护的内容并且还要进行查询。在这样做时,您的数据不太可用。

答案 4 :(得分:-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]'

如果有任何值,这将按照您的意愿插入。