个人数据库中有一个表story_category
,表中的条目已损坏。 下一个查询返回损坏的条目: sql
SELECT * FROM story_category WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id);
我试图删除它们执行: 数据库
DELETE FROM story_category WHERE category_id NOT IN ( SELECT DISTINCT category.id FROM category INNER JOIN story_category ON category_id=category.id);
可是我获得了下一个错误: spa
#1093-您没法在FROM子句中指定目标表'story_category'进行更新 code
我该如何克服? get
最近,我不得不更新同一表中的记录,以下所示: it
UPDATE skills AS s, (SELECT id FROM skills WHERE type = 'Programming') AS p SET s.type = 'Development' WHERE s.id = p.id;
根据@CheekySoft连接的Mysql UPDATE语法 ,它说在底部。 io
当前,您没法更新表并在子查询中从同一表中选择。 table
我猜您正在从store_category中删除,同时仍在联合中从中进行选择。 变量
这就是我在表中及其在WHERE子句中使用同一表上的子查询> 1时将Priority列值更新为1的方式,以确保至少一行包含Priority = 1(由于这是执行更新时要检查的条件): 语法
UPDATE My_Table SET Priority=Priority + 1 WHERE Priority >= 1 AND (SELECT TRUE FROM (SELECT * FROM My_Table WHERE Priority=1 LIMIT 1) as t);
我知道这有点丑陋,但效果确实不错。
尝试将Select语句的结果保存在单独的变量中,而后将其用于删除查询。
若是你作不到
UPDATE table SET a=value WHERE x IN (SELECT x FROM table WHERE condition);
由于它是同一张表,因此您能够欺骗并作到:
UPDATE table SET a=value WHERE x IN (SELECT * FROM (SELECT x FROM table WHERE condition) as t)
[更新或删除或其余]