यह बहुत सीधा होना चाहिए।
SELECT (CASE WHEN @fk <> fk_id THEN @row:=1 ELSE @row:[email protected] + 1 END) AS ordinality,
@fk:=fk_id, rcv_date
FROM (SELECT @row:=0) AS r,
(SELECT @fk:=0) AS f,
(SELECT fk_id, rcv_date FROM files ORDER BY fk_id, rcv_date) AS t
मैंने fk_id
. द्वारा आदेश दिया सबसे पहले यह सुनिश्चित करने के लिए कि आपकी सभी विदेशी कुंजियाँ एक साथ आएँ (क्या होगा यदि वे वास्तव में तालिका में नहीं हैं?), तो मैंने आपका पसंदीदा आदेश दिया, अर्थात rcv_date
द्वारा . क्वेरी fk_id में परिवर्तन की जांच करती है और यदि कोई है, तो पंक्ति संख्या चर 1 पर सेट है, अन्यथा चर बढ़ा हुआ है। केस स्टेटमेंट में इसका संचालन किया जाता है। ध्यान दें कि @fk:=fk_id
केस की जाँच के बाद किया जाता है अन्यथा यह पंक्ति संख्या को प्रभावित करेगा।
संपादित करें: बस अपना खुद का समाधान देखा जो वही हुआ जैसा मैंने समाप्त किया था। प्रशंसा! :)पी>