我有这个表:MySQL的 - 递增列值基于COUNT
现在,如果我算在id_racuna
列不在NULL
使用行:
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;
我希望得到:
,但我得到一个错误:
Table r2 doesn't exist!
我试着欺骗MySQL使用JOIN
认为r1
和r2
是两个不同的表,但它不起作用。我见过这种诡计here它在哪里工作...我错过了什么?
UPDATE:
我需要使用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;
我会得到错误:
Table 'racuni' is specified twice, both as a target for 'UPDATE' and as a separate source for data
我的意思是你指的是两张表作为r2。也许尝试没有看到MySQL不高兴的地方? – 0x11
如果我不说,我会得到错误:表被指定两次,既作为'UPDATE'的目标,也作为数据的单独来源。 – 71GA
哦,我明白了。那么为什么不设置一个变量等于计数的值,然后在下面运行你的直接更新查询? – 0x11