我有 2 个表:table1
和 wp_posts
。第一个是自定义表,第二个是wordpress表。
我想更改wp_posts
中符合以下条件的所有帖子类型:post_title
与table1
中的headline
相同,并且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 服务器版本相对应的手册,了解在第 1 行的"FROM wp_posts JOIN table1 ON table1.headline = wp_posts.post_title W"附近使用的正确语法
表格看起来像这样(大致(
表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_title
和headline
(是唯一的,因此不会有重复等。
我的 ALTER
sql 语句有什么问题?
试试这个:
UPDATE wp_posts JOIN table1 ON table1.headline = wp_posts.post_title
SET wp_posts.post_type = 'jobs'
WHERE table1.type_id = 41;
更改更新查询,如下所示
查询
UPDATE wp_posts
JOIN table1
ON table1.headline = wp_posts.post_title
SET wp_posts.post_type = 'jobs'
WHERE table1.type_id = 41;
更新语句模式为:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
抛出的错误是由您的"FROM"关键字引起的。
您不能要求更新并同时使用 SELECT 模式数据。
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