我有這個表: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