更新一个MySQL表上的行,其中具有匹配列的行存在于另一个表上?

1 php mysql compare join

我有两个表("z"和"z_ao")."z"包含美国的所有邮政编码以及其他所需信息."z_ao"仅包含某些邮政编码.我想在"z"的每一行中将"ls"列设置为"1",其中"z"中的"zip"与"z_ao"中的"zip"匹配.

我一整天都在阅读以确定这样做的"正确"方式,我认为这会使用JOIN但却令人沮丧地困惑,在这种情况下,这是一次性操作,所以我最终做了以下笨拙的事情,查询密集的方式:

$z = mysql_query("SELECT zip_code FROM z");
while($z_row = mysql_fetch_row($z)) {
  $zao = mysql_query("SELECT zip FROM z_ao WHERE zip='$z_row[0]'");
  $zao_num=mysql_numrows($zao);
  if (mysql_numrows($zao) == 1) {
    mysql_query("UPDATE z SET ls = '1' WHERE zip_code='$z_row[0]'");
  }
}
Run Code Online (Sandbox Code Playgroud)

我很遗憾寻求帮助,因为我知道答案已经存在,但为了将来的参考,我想了解这样做的正确方法,我想我需要看一个确切的例子.

谢谢.

Bil*_*win 5

尝试多表更新:

UPDATE z INNER JOIN z_ao ON z.zip_code = z_ao.zip SET z.ls='1' 
Run Code Online (Sandbox Code Playgroud)

您不需要进行任何计数或测试或循环.JOIN会为您匹配行,并自动排除z_ao表中不匹配的邮政编码.