mysql - 将带有连接的mysql选择查询转换为带有连接的更新查询

标签 mysql sql sql-update

我有一个这样的选择查询:

SELECT n.nid, n.title, n2.nid, n2.title, n2.type
FROM node n
    JOIN og_ancestry o ON n.nid = o.group_nid
    JOIN node n2 ON n2.nid = o.nid 
    JOIN og_access_post a ON o.nid = a.nid
    JOIN content_type_group c ON n.vid = c.vid 
WHERE n.type = 'group'
    AND a.og_public = 1
    AND c.field_tyyppi_value != 'type1'

我不知道如何将其转换为更新查询。我试过这样:

UPDATE og_access_post a
    SET a.og_public = 0
FROM node n
    JOIN og_ancestry o ON n.nid = o.group_nid
    JOIN node n2 ON n2.nid = o.nid 
    JOIN og_access_post a ON o.nid = a.nid
    JOIN content_type_group c ON n.vid = c.vid 
WHERE n.type = 'group'
    AND a.og_public = 1
    AND c.field_tyyppi_value != 'type1'

但是我得到一个错误:

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 'FROM n.nid, n.title, n2.nid

我已经找到了一些解决方案,但对于那些我需要修改表和联接的顺序。选择查询中的逻辑是正确的,所以为了进行更新我必须再次考虑查询的逻辑对我来说毫无意义。

如何在不从根本上改变查询结构的情况下转换我的查询以进行更新?

最佳答案

UPDATE with joinMYSQL 中不使用 FROM 子句,

update  og_access_post a 
        JOIN og_ancestry o ON o.nid = a.nid
        JOIN node n ON n.nid = o.group_nid
        JOIN node n2 ON n2.nid = o.nid
        JOIN content_type_group c ON n.vid = c.vid 
SET     a.og_public = 0 
WHERE   n.type = 'group' AND 
        a.og_public = 1 AND 
        c.field_tyyppi_value != 'type1'

关于mysql - 将带有连接的mysql选择查询转换为带有连接的更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15296730/

相关文章:

mysql - mysql 5.6 的自定义 json_extract 函数未按预期工作

java - 调用方法时出现 NullPointerException

mysql - 不同 SQL 平台中的 ALL 子句

php - 从另一个mysql用户表导入用户到Mybb数据库

mysql - 分区表使用所有分区用于 MySQL 中的基本 SELECT 语句

sql - 沿曲线排序数据库查询结果

sql - 使用 SQL Server 或 Vertica 将按日期范围的记录转换为按日/月的记录

Mysql根据列输入动态更新行

php - 即使添加了主键,ON DUPLICATE KEY UPDATE 仍然会添加重复项

从连接查询更新 Mysql