سؤال

لدي الجدول التالي

Id   Value
1     3
1     12
1     67
2     7
2     99
5     30
5     33
5     4
5     87
5     12
5     1

أرغب في تحديثه للحصول على هذا الجدول.

Id  UniqueIdBySubSet    Value
1           1             3
1           2             12
1           3             67
2           1             7
2           2             99
5           1             30
5           2             33
5           3             4
5           4             87
5           5             12
5           6             1

لقد وجدت الخيط المثالي على ذلك، لكنه كان ل MSSQL. يمكنني استخدام MySQL 4.1.10.

يمكن العثور على الخيط الآخر هنا: توليد تسلسلات فرعية من الجدول.

هل يعرف أحد كيف يمكنني القيام بذلك في MySQL؟

شكرا لك يا جان فرانسوا

هل كانت مفيدة؟

المحلول

SET  @r := 0;
SET  @id := 0;
UPDATE  mytable m
SET     m.UniqueIdBySubSet = IF(@id = id, @r := @r + 1, @r := (@id := id) - id)
ORDER BY
        id, value;

نصائح أخرى

اكتب نص سريع للقيام بذلك. يجب أن يستغرق أقل من 10 خطوط من التعليمات البرمجية في PHP.

أعتقد أنك ستجد هذه المقالة مفيد. باختصار: لا يمكنك القيام بذلك في استعلام واحد بالضبط، ولكن يمكنك القيام بذلك في قسمين (قم بتحميل بياناتك إلى جدول جديد وتنفيذ عبارة إدراج).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top