更新表值时出错

时间:2016-02-08 10:06:20

标签: php mysql sql wordpress

我有2个表:table1wp_posts。第一个是自定义表,第二个是wordpress表。

我想更改wp_posts中符合post_titleheadlinetable1相同且type_id的条件的所有帖子类型密钥等于41。

我尝试选择那些帖子

SELECT * FROM wp_posts LEFT JOIN table1 ON table1.headline = wp_posts.post_title WHERE table1.type_id = 41

我收到了正确的帖子(我在phpmyadmin中这样做)。

所以我尝试了

UPDATE wp_posts SET wp_posts.post_type = 'jobs' FROM wp_posts JOIN table1 ON table1.headline = wp_posts.post_title WHERE table1.type_id = 41

我收到错误

  

#1064 - 您的SQL语法出错;检查与您的MariaDB服务器版本对应的手册,以便在#c; FROM wp_posts附近使用正确的语法JOIN table1 ON table1.headline = wp_posts.post_title W'在第1行

表格如下(大致)

表1

headline  |  type_id
--------------------
Random    |  41
Random 2  |  41

wp_posts

post_title  |  post_type
--------------------
Random      |  post
Random 2    |  post

我需要将post更改为jobs

post_title  |  post_type
--------------------
Random      |  jobs
Random 2    |  jobs

名称(post_titleheadline)是唯一的,因此不会有重复等。

我的ALTER sql语句出了什么问题?

3 个答案:

答案 0 :(得分:1)

更改下面的更新查询

<强>查询

UPDATE wp_posts
JOIN table1
ON table1.headline = wp_posts.post_title
SET wp_posts.post_type = 'jobs'
WHERE table1.type_id = 41;

答案 1 :(得分:1)

试试这个:

UPDATE wp_posts JOIN table1 ON table1.headline = wp_posts.post_title
SET wp_posts.post_type = 'jobs' 
WHERE table1.type_id = 41;

答案 2 :(得分:0)

更新语句模式是:

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]

引发的错误是由您的&#39; FROM&#39;引起的。关键词。

您不能要求更新,同时使用SELECT Pattern数据。

UPDATE TABLE_NAME SET TABLE_NAME.COLUMN_NAME = 'MY CUSTOM DATA' 
WHERE TABLE_NAME.[OTHER]COLUMN_NAME = 'MY PATTERN DATA';

MYSQL链接:http://dev.mysql.com/doc/refman/5.7/en/update.html