これはかなり簡単なはずです。
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に設定され、そうでない場合は変数がインクリメントされます。そのincaseステートメントで処理されます。 @fk:=fk_id
に注意してください ケースチェックの後に実行されます。そうでない場合は、行番号に影響します。
編集: たまたま私が最終的に得たものと同じであるあなた自身の解決策に気づきました。称賛! :)