MySQL - 根据COUNT递增列值

时间:2017-09-22 19:38:13

标签: mysql

我有这张桌子:

enter image description here

现在,如果我使用以下代码计算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

我明白了:

enter image description here

因此,如果我在这样的更新中使用此值:

r1

我希望得到:

enter image description here

但是我收到了错误:

  

表r2不存在!

我尝试使用r2欺骗MySQL,认为JOINUPDATE 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'的目标又作为   一个单独的数据来源

1 个答案:

答案 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;