如何用一个查询在MYSQL中更新多个表


How to UPDATE multiple tables with 1 query in MYSQL

我想知道是否有可能用mysql的一个查询更新多个表。我已经尝试过使用INNER JOIN,但我相信我已经关闭了,因为我继续得到语法错误之后的语法错误。下面是我当前的sql语法:

UPDATE blog_posts a INNER JOIN search b ON a.postTitle =  b.title, a.postSlug = b.link, a.postDesc = b.description, a.postCont SET a.:postTitle = b.:postTitle, a.:postSlug = b.:postSlug, a.:postDesc = b.postDesc, a.:postCont WHERE postID = :postID AND title = :postTitle

下面是一些背景:我在同一个数据库中有两个表。一个名为blog_posts,另一个名为search。我的blog_posts表包含我网站上的博客文章的内容。我最近为我的站点添加了一个搜索引擎,并添加了表搜索来存储我所有页面的数据。我的想法是,每次有人更新博客文章,在搜索表中的信息将被更新,以及相同的信息。我知道我的语法确实有问题,但如果有人能帮我改正它,使它能像我上面描述的那样工作,我将不胜感激。

另外,我的每个表都有不同的列名。blog_posts具有以下属性:postID、postTitle、postSlug(转换为链接的标题)和postDesc搜索包括:id、标题、描述、关键字、链接

我试图使我的脚本,使它更新的搜索表行,其中postTitle = title。也许有更好的办法?无论如何,任何帮助都会很感激。

您可以在没有显式INNER JOIN语法的情况下执行此操作,而是在WHERE子句中执行:

UPDATE blog_posts a, search b
SET a.postTitle = :postTitle
    , b.title = :postTitle
    , a.postSlug = :postSlug
    , b.link = :postSlug
    , a.postDesc = :postDesc
    , b.description = :postDesc
-- this continues for any tables/values you want to set
WHERE a.postID = :postID
    AND -- whatever else joins your two tables together or other unique values