我需要一点帮助,我有这个 SQL 选择:
SELECT *
FROM 'gknwcrpostmeta'
WHERE 'meta_key' LIKE '_fgd2wp_old_node_id'
AND 'meta_value' IN ( SELECT 'object_id'
FROM 'gknwcrterm_relationships'
WHERE 'object_id' = 'meta_value')
工作正常。
现在我想更新 - 选择找到了什么,所以我写了这个查询:
UPDATE 'gknwcrpostmeta'
SET 'meta_key' = 'sac_locked', 'meta_value' = 'logged in'
FROM 'gknwcrpostmeta'
WHERE 'meta_key' LIKE '_fgd2wp_old_node_id'
AND 'meta_value' IN ( SELECT 'object_id'
FROM 'gknwcrterm_relationships'
WHERE 'object_id' = 'meta_value')
模拟查询正常,但真实查询返回:
#1064 - Something is wrong in your syntax near 'FROM 'gknwcrpostmeta' WHERE 'meta_key' LIKE '_fgd2wp_old_node_id' AND 'meta_valu' on line 3
有什么建议吗?
最佳答案
这在我的数据库中对我有用。我刚刚用你的替换了表名。
UPDATE EmploymentAssignment
SET approver = 1
FROM EmploymentAssignment ea INNER JOIN ( SELECT personID , schoolID FROM EmploymentAssignment WHERE personID LIKE '%75' AND schoolID IN ( 2,3,4) ) t on ea.personID = t.personID AND ea.schoolID = t.schoolID
所以翻译成你的,它看起来像:
UPDATE `gknwcrpostmeta`
SET `meta_key` = 'sac_locked', `meta_value` = 'logged in'
FROM `gknwcrpostmeta` a INNER JOIN (SELECT * FROM `gknwcrpostmeta` WHERE `meta_key` LIKE '_fgd2wp_old_node_id' AND `meta_value` IN ( SELECT `object_id` FROM `gknwcrterm_relationships` WHERE `object_id` = `meta_value`)) t on a.`meta_key` = t.`meta_key` AND a.`meta_value` = t.`meta_value`
希望这有帮助
关于mysql - SQL - 我想要选择 - 并更新所选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44829850/