我有这张桌子:
现在,如果我使用以下代码计算SELECT COUNT (id_racuna) FROM racuni WHERE id_racuna IS NOT NULL;
列UPDATE racuni AS r1 JOIN racuni AS r2 ON r1.id_interesa = r2.id_interesa
SET r1.id_racuna = (SELECT COUNT (r2.id_racuna) FROM r2 WHERE r2.id_racuna IS NOT NULL) +1,
r1.poslano = curdate()
WHERE r1.id_interesa = 8;
中的行
JOIN
我明白了:
因此,如果我在这样的更新中使用此值:
r1
我希望得到:
但是我收到了错误:
表r2不存在!
我尝试使用r2
欺骗MySQL,认为JOIN
和UPDATE racuni
SET id_racuna = (SELECT COUNT (id_racuna) FROM racuni WHERE id_racuna IS NOT NULL) +1,
poslano = curdate()
WHERE id_interesa = 8;
是两个不同的表,但它不起作用。我已经看到了这种技巧here它在哪里工作......我错过了什么?
更新
我需要使用{{1}},因为如果我写的只是:
{{1}}
我会收到错误:
表'racuni'被指定两次,既作为'UPDATE'的目标又作为 一个单独的数据来源
答案 0 :(得分:1)
尝试使用交叉连接并将子查询包装在其中
UPDATE racuni AS r1
CROSS JOIN (SELECT COUNT (id_racuna) id_racunacount
FROM racuni
WHERE id_racuna IS NOT NULL) a
SET r1.id_racuna = a.id_racunacount + 1,
r1.poslano = curdate()
WHERE r1.id_interesa = 8;