我有一个mysql问题。希望你们中的一个可以帮助我!
我有两张相同长度的表格,我希望通过匹配唯一ID()来移动 table_1 列旁边的 table_2 列U_ID )。
我拥有的表结构;
TABLE_1
id - u_id - field_1 - field_2
1 - 123 - abc - (empty)
2 - 456 - fgd - (empty)
TABLE_2
id - u_id - field_2
1 - 123 - kjh
2 - 456 - mnb
我想要的表格结构;
table_new
id - u_id - field_1 - field_2
1 - 123 - abc - kjh
2 - 456 - fgd - mnb
我该怎么做?
...谢谢
答案 0 :(得分:2)
在mysql提示符下:
INSERT INTO table_new (id, u_id, field_1, field_2) SELECT t1.id, t1.u_id,
t1.field_1, t2.field_2 FROM table_1 t1 JOIN table_2 t2 ON (t1.u_id = t2.u_id);
或只是
UPDATE table_1 SET field_2 = (SELECT t2.field_2 FROM table_2 t2 WHERE t2.u_id = table_1.u_id)
答案 1 :(得分:2)
我会使用多表UPDATE语法。
UPDATE table1 JOIN table2 USING (u_id)
SET table1.field_2 = table2.field_2;
答案 2 :(得分:0)
直截了当地在php中完成它。 这里有一些伪代码可以帮助你入门。
SELECT u_id, field_1 FROM table_1;
(while results)
{
SELECT field_2 FROM table_2 WHERE u_id = ?;
INSERT INTO table_new VALUES (u_id, field_1, field_2);
}
答案 3 :(得分:0)
假设您有一个名为query的php函数,通常用于select语句:
$tables = array();
$tables[] = query("DESCRIBE table_1");
$tables[] = query("DESCRIBE table_2");
$sql = "CREATE TABLE `table_new` {";
foreach ($tables as $table) {
foreach ($table as $col) {
$sql .= "`".$col['Field']."` ".$col['Type'];
if ($col['Null'] == "NO") $sql .= " NOT ";
$sql .= " NULL";
if ($col['Default'] != "NULL") $sql .= " DEFAULT '".$col['Default']."'";
$sql .= ", ";
}
}
$sql .= ")";
这是基本的想法..如果你需要维护外键或触发器,你需要开始查看information_schema.statistics表
答案 4 :(得分:0)
创建table table_new作为select t1.id,t1.u_id,t1.field_1,t2.field2 from table_1 t1 left join table_2 t2 on t1.u_id = t2.u_id;
答案 5 :(得分:0)
首先,创建table_new。然后,使用MySQL SELECT INTO。也许是这样的:
INSERT INTO table_new SELECT table_1.u_id, table_1.field_1, table_2.field_2
FROM table_1 LEFT JOIN table_2 USING (u_id);