帝国CMS Mysql同一个表不能同时进行update和select操作怎么办(付解决办法)
帝国CMS解决Mysql同一个表不能同时进行update和select操作的问题,下面一起来看看:
我要更改帝国CMS栏目ID=583的下级栏目模板ID,用下面SQL语句,没毛病:
UPDATE `phome_enewsclass` SET `listtempid` = 2 WHERE bclassid = 583
我要更改帝国CMS栏目ID=583的下下级栏目模板ID,用下面SQL语句:
UPDATE `phome_enewsclass` SET `listtempid` = 2 WHERE bclassid in (SELECT classid FROM `phome_enewsclass` WHERE bclassid = 583)
执行报错:#1093 - You can't specify target table 'phome_enewsclass' for update in FROM clause,意思是在同一张表上,你不能先select了再执行update操作。
改用下面SQL语句,可以修改指定栏目下的第三级栏目的模板ID:
UPDATE `phome_enewsclass` AS A INNER JOIN (SELECT classid FROM `phome_enewsclass` WHERE bclassid in(SELECT classid FROM `phome_enewsclass` WHERE bclassid = 583)) AS B ON A.classid = B.classid SET A.listtempid = 2