> 做站经验技巧 > MySQL多条件子查询遇到同一个表报错时怎么办?

MySQL多条件子查询遇到同一个表报错时怎么办?

经常玩mysql必定对遇到类似的1064报错

MySQL多条件子查询遇到同一个表报错时怎么办?

(错误命令)运行命令:

UPDATE `wp_postmeta` SET `meta_value`= '0' WHERE `meta_key`='wppay_type' AND `post_id` IN SELECT `post_id` FROM `wp_postmeta` WHERE `meta_value` = '下载地址' ;

#1064报错提示:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT `post_id`  FROM `wp_postmeta` WHERE `meta_value` = '下载地址' at line 1

报错原因很简单,update where in循环查询同一个表,会报错的。

解决方法也特别简单,把这个表作为另一个表存起来,然后读取这个表即可。虽然很变态,但只有这种解决方法了

(正确命令)将最初的MySQL命令修改为如下命令:

UPDATE `wp_postmeta` SET `meta_value`= '0' WHERE `meta_key`='wppay_type' AND `post_id` IN (SELECT `post_id` from (SELECT * FROM `wp_postmeta` WHERE `meta_value` ='下载地址') AS t);

 

具体解释:如上黄色代码为修改部分

SELECT `post_id` from (SELECT * FROM `wp_postmeta` WHERE `meta_value` ='下载地址') AS t

就是绿色命令行查询报表,整行代码将post_id转存为临时表t。

最终嵌套进去即可。

 

看似非常简单,但临表把mysql命令搞得非常复杂,看得头晕眼花。

 

MySQL多条件子查询遇到同一个表报错时怎么办?:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!