私は現在SQLデータベースエンジンの前にいないため、完全に検証されたSQLコードを送信できません。ただし、numフィールドが自動インクリメントフィールドでない場合は、次のようにします。
CREATE TEMPORARY TABLE temp_table_x (
num int auto_increment primary key,
reference_id int
);
INSERT temp_table_x (reference_id)
SELECT id FROM source_table ORDER BY id;
UPDATE source_table st
SET st.num = x.num
FROM temp_table_x x
WHERE reference_id = id;