我想使用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而不是每个值的不同列?
对不起,如果这令人困惑!
答案 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)
是的,如果列可以存储文本信息
只需CONCAT
或CONCAT_WS
值
INSERT INTO items_rooms ( item_id, room_id, my_value, n )
SELECT id, room_id, CONCAT_WS( '.', x, y ), z
FROM `items_phoenix`
答案 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]'
如果有任何值,这将按照您的意愿插入。