私がやりたいことは、すべての患者に、1 で始まる一意の患者コードを設定することです。これは、行 ID に基づいていません。Id は順序のみを指定します。このようなもの:
patient_id patient_code
2 1
3 2
4 3
これは私のクエリです:
UPDATE patients p1
SET p1.patient_code = (
SELECT COUNT( * )
FROM patients p2
WHERE p2.patient_id <= p1.patient_id
)
しかし、それはエラーをスローしています:
#1093 - You can't specify target table 'p1' for update in FROM clause
このスレッドを見つけました: Mysql エラー 1093 - FROM 句で更新するターゲット テーブルを指定できません。
しかし、承認された回答 this を適用して、COUNT に必要なサブクエリ WHERE を操作する方法がわかりません。