2016-07-01 32 views
0

我正在尝试使用MySql Quariy更改帖子并不断收到1093 Err 我尝试了所有有关使用子查询的提示没有成功err#1093 - 您无法指定目标表'wp_posts'在FROM子句中进行更新

也许有人可以帮我

UPDATE wp_posts SET post_content = CONCAT(post_content , 'testext_bla_bla') 
WHERE wp_posts.id in (select wp_posts.ID 
from wp_posts 
LEFT JOIN wp_term_relationships on wp_posts.ID = wp_term_relationships.object_id 
LEFT JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id 
LEFT JOIN wp_terms ON wp_terms.term_id = wp_term_relationships.term_taxonomy_id 
WHERE wp_posts.post_excerpt like '%LO1185LH%' and wp_term_taxonomy.term_taxonomy_id = 27) 

,并不断收到“#1093 - 你不能指定更新目标表‘wp_posts’FROM子句”

感谢 阿萨夫

回答

0

使用alias为您更新的表;)

UPDATE wp_posts t1 SET t1.post_content = CONCAT(t1.post_content, 'testext_bla_bla') 
WHERE t1.id IN (
SELECT wp_posts.ID 
FROM wp_posts 
LEFT JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_id 
LEFT JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id 
LEFT JOIN wp_terms ON wp_terms.term_id = wp_term_relationships.term_taxonomy_id 
WHERE wp_posts.post_excerpt LIKE '%LO1185LH%' AND wp_term_taxonomy.term_taxonomy_id = 27) 

或者你可以只使用LEFT JOIN做到这一点;)

UPDATE wp_posts t1 
LEFT JOIN wp_term_relationships ON t1.ID = wp_term_relationships.object_id 
LEFT JOIN wp_term_taxonomy ON wp_term_taxonomy.term_taxonomy_id = wp_term_relationships.term_taxonomy_id 
LEFT JOIN wp_terms ON wp_terms.term_id = wp_term_relationships.term_taxonomy_id 
SET t1.post_content = CONCAT(t1.post_content, 'testext_bla_bla') 
WHERE t1.post_excerpt LIKE '%LO1185LH%' AND wp_term_taxonomy.term_taxonomy_id = 27 
0

这是因为更新语句不从,因为你设置表后更新UPDATE子句,如:

UPDATE wp_posts 
SET column1=value, column2=value2,... 
WHERE some_column = some_value. 

数据库引擎是taki纳克FROM子句,因为它的UPDATE句子里面(因为它是一个更新语句)来处理它是最容易的方式选择第一个(和PHP),并用这个结果来处理它的更新,如:

$result = connection()->query("SELECT blah_blah_blah"); 
connection()->close(); 
$rs = mysqli_fetch_array($result); 
//ok you got the result on $rs, if you wanna do an update with this it should 
//be unique result, if you want to do it recursively, simply act over $rs[$i]; 
//then, once or in a loop: 
$sql = "UPDATE wp_posts 
SET column1=value, column2=value2,... 
WHERE some_column = ".$rs['index_that_you_want'].";"; 
connection()->query($sql); 

(记得使用$ rs = mysqli_fetch_array($ result)取下一行;在循环的底部,如果你需要递归运行它。

相关问题