2016-08-07 101 views
0

我有5个表在一个单一的数据库和相同的时间的字段名称。我需要的东西是波纹管php mysql更新多个表具有相同的字段?

UPDATE `customers` SET `username`='new' WHERE `username`='old'; 
UPDATE `radacct` SET `username`='new' WHERE `username`='old'; 
UPDATE `radcheck` SET `username`='new' WHERE `username`='old'; 
UPDATE `radreply` SET `username`='new' WHERE `username`='old'; 
UPDATE `radusergroup` SET `username`='new' WHERE `username`='old'; 

现在我怎么能更新一个查询中的所有表?我曾尝试与

UPDATE `customers`,`radacct`,`radcheck`,`radreply`,`radusergroup` SET `username`='new' WHERE `username`='old' 

但它给我的错误

1052 - 栏目 '用户名' 中的字段列表是不明确的

寻找解决方案

+0

仅仅因为这些列标识符具有相同的名称并不意味着您可以一次引用它们全部。您仍然需要在查询中单独指定每个列: –

+1

尝试使用多个查询,并且该列实际上是否存在并在所有表中?你试过的东西不会按顺序工作。你需要一个多重查询。 –

回答

0

如果你想要的是一个调用在PHP端查询,我会做:

$mysqli->query("UPDATE `customers` SET `username`='new' WHERE `username`='old'; UPDATE `radacct` SET `username`='new' WHERE `username`='old'; UPDATE `radcheck` SET `username`='new' WHERE `username`='old'; UPDATE `radreply` SET `username`='new' WHERE `username`='old'; UPDATE `radusergroup` SET `username`='new' WHERE `username`='old';"); 

如果你想在MySQL侧一个查询,以及因为这些表的更新不依赖从各其他,我认为没有意义,因为它会产生沉重的查询(正如你可以在其他答案中看到的那样)。

1

你可以这样做在加入的帮助下。

UPDATE customers, 
      radacct, 
      radcheck, 
      radreply, 
      radusergroup 
    SET customers.username = "new", 
      radacct.username = "new", 
      radcheck.username = "new" 
      radreply.username = "new"  
      radusergroup.username = "new" 
    WHERE customers.username = "old" 
      AND radacct.username = "old" 
      AND radcheck.username = "old" 
      AND radreply.username = "old" 
      AND radusergroup.username = "old" 
相关问题