@JW と私はほぼ同時に以下に到達しましたが、JW は時間通りに優位に立ちました!
UPDATE citytable a
INNER JOIN codetable b ON a.cityname LIKE CONCAT('%',b.city,'%')
SET a.codenumber = b.codenumber
Morgan がこれを SELECT で実行し、その後に UPDATE でループする PHP の例を求めた後、更新してください。
<?php
#Fill out the four variables below.
#
#This is just an example!
#If you are going to use this for real, you want to put the top
#4 variables in a separate file and include that file into this
#file via phps include directive. That separate file needs
#to be in a tightly security controlled directory, because
#your database password is in the file.
#
#For security reasons, the variables below must not come from
#user supplied data (from a POST or GET or the SESSION variables).
#
$dbName = '';
$hostName = '';
$username = '';
$password = '';
$dbh = new PDO("mysql:dbname=$dbName;host=$hostName",
$username, $password);
$dbh->setAttribute(PDO_ATTR_ERRMODE, PDO_ERRMODE_EXCEPTION);
$sqlSelect = "
SELECT cityname, codenumber
FROM city a
INNER JOIN codetable b ON
a.cityname LIKE CONCAT('%',b.city,'%');";
$sqlUpdate = "
UPDATE citytable SET codenumber = ? WHERE cityname = ?";
$rows = $dbh->query($sqlSelect)->fetchAll();
$sth = $dbh->prepare($sqlUpdate);
foreach($rows as $row) {
$codeNumber = $row['codenumber'];
$cityName = $row['cityname'];
$sth->execute(array($codeNumber,$cityName));
}