mysql - SQL - 我想要选择 - 并更新所选

标签 mysql sql

我需要一点帮助,我有这个 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/

相关文章:

mysql - 如何获取具有多个值的所有行

SQL*Plus 命令行参数在 Windows 中被覆盖

mysql - 删除字符串中的所有字符

mysql - 统计mysql文本中的重复单词

sql - ORACLE:一次更新多列

PHP MySQL 查询未返回完整的所需结果集

mysql - 用vim保存一个10GB的大文件

mysql - 多个不同 ID 的总和计算问题

php - 无法将 PHP 应用程序与 MySQL 连接

mysql - 检查多列值