Php 将两个字段合并到一个表中,可存储43000条记录
我有一个代码,我想将同一个表中的两个字段合并到同一个表中的另一个字段,并从另一个表中填写StateName 位置表有43000条记录 我想改变这个Php 将两个字段合并到一个表中,可存储43000条记录,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,我有一个代码,我想将同一个表中的两个字段合并到同一个表中的另一个字段,并从另一个表中填写StateName 位置表有43000条记录 我想改变这个 Table: states_cache Table: locations StateName | StateInitials LocationID | City | StateInitials | StateName | Combo ------------------------ -----
Table: states_cache Table: locations
StateName | StateInitials LocationID | City | StateInitials | StateName | Combo
------------------------ --------------------------------------------------------------
Missouri | MO 32500 | Springfield | MO | |
Kansas | KS 34151 | Topeka | KS | |
对此
Table: states_cache Table: locations
StateName | StateInitials LocationID | City | StateInitials | StateName | Combo
------------------------ --------------------------------------------------------------
Missouri | MO 32500 | Springfield | MO | Missouri | Springfield MO
Kansas | KS 34151 | Topeka | KS | Kansas | Topeka KS
这是我的密码
我试着运行它,它只是给我加载屏幕
$conn = &$GLOBALS["dbSettings"]->GetConnection();
$sql = "SELECT City, StateInitials, LocationID, StateInitials FROM locations";
$rs = $conn->Execute($sql);
while (!$rs->EOF)
{
$sql2 = "SELECT StateName FROM states_cache WHERE StateInitials ='" . $rs->fields[3] . "'";
$rs2 = $conn->Execute($sql2);
if ($rs2 === false) die('select error: ' . $conn->ErrorMsg() . " SQL: " . $sql2);
$sql1 = "UPDATE locations SET StateName ='" . $rs2->fields[0] . "', combo ='" . $rs->fields[0] . " " . $rs->fields[1] ."' where LocationID =" . $rs->fields[2];
$rs1 = $conn->Execute($sql1);
if ($rs1 === false) die('select error: ' . $conn->ErrorMsg() . " SQL: " . $sql1);
echo $sql1;
}
?>
-------------------解决------------------------------
UPDATE locations
JOIN states_cache
ON states_cache.StateInitials = locations.StateInitials
SET states_cache.StateName = locations.StateName, locations.Combo = CONCAT(locations.City, ' ', locations.StateInitials)
感谢Marc B为我指出了一个更简单的解决方案无需在循环中运行这些查询。您可以通过单个
更新来完成此操作。。。加入
query。好的,我会研究的,谢谢这是如此的简单…更新位置加入状态在状态上的状态缓存。状态初始值=位置。状态初始值设置状态\u缓存。状态名称=位置。状态名称,位置。组合=CONCAT(locations.City',,locations.StateInitials)
UPDATE locations
JOIN states_cache
ON states_cache.StateInitials = locations.StateInitials
SET states_cache.StateName = locations.StateName, locations.Combo = CONCAT(locations.City, ' ', locations.StateInitials)