我有一个这样的选择查询:
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 join 在 MYSQL
中不使用 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/