私はこのテーブルを持っています:
今、私が列の行を数えれば 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;