/ / MySQL - COUNTに基づいてカラム値をインクリメントする - mysql

MySQL - COUNTに基づいてカラム値をインクリメントする - mysql

私はこのテーブルを持っています:

ここに画像の説明を入力

今、私が列の行を数えれば 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;

私は得ることを期待する:

ここに画像の説明を入力

しかし、私はエラーが発生します:

テーブルr2は存在しません!

私はMySQLを使用してトリックしようとしました JOIN それを考える r1 そして r2 2つの異なるテーブルですが、動作しません。私はこの種のトリックを見ました ここに それは働いた...私は何が欠けているのですか?


更新:

私は使用する必要があります 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;

私はエラーが発生します:

テーブル "racuni"は、 "UPDATE"のターゲットと データのための別のソース

回答:

回答№1は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;