2

我有一张带有城市名称表(citytable)的表

idcity  |   cityname     |  statename  |    codenumber
   1    |   Los Angeles  |   state2    |     ...
   2    |   New York     |   state3    |     ...
   3    |   New Jersey   |   state3    |     ...

代号城市表(codetable)

  id |  city     | codenumber
   1 |  angeles  |   031
   2 |  york     |   064
   3 |  jersey   |   075

怎么做SET or INSERT or UPDATE data 'codenumber' FROM 'codetable' fields INTO 'codenumber' column FROM citytable WHERE 'city' FROM codetable LIKE '%cityname%' FROM 'citytable'?感谢您的帮助。

4

2 回答 2

2

利用UPDATE with join

UPDATE  cityTable a
        INNER JOIN codeTable b
            ON a.ID = b.ID
SET     a.codeNumber = b.codeNumber

但我怀疑这里IDAUTO_INCREMENTed 列,如果是这样,

UPDATE  cityTable a
        INNER JOIN codeTable b
            ON a.cityName LIKE CONCAT('%', b.city,'%')
SET     a.codeNumber = b.codeNumber
于 2013-01-18T16:39:57.370 回答
0

@JW 和我或多或少同时到达以下位置,但 JW 准时获得优势!

UPDATE citytable a
INNER JOIN codetable b ON  a.cityname LIKE CONCAT('%',b.city,'%')
SET a.codenumber = b.codenumber

在 Morgan 要求在 SELECT 中执行此操作的 php 示例后更新,然后使用 UPDATE 循环。

<?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));

}
于 2013-01-18T16:42:59.843 回答