私はこのようなテーブルを持っています...
mysql> select * from billing_order_history;
+----------+---------------+--------------+---------------------+
| order_id | modify_action | new_order_id | modified_by_user_id |
+----------+---------------+--------------+---------------------+
| 52 | 2 | 54 | 1 |
| 54 | 2 | 55 | 1 |
| 55 | 2 | 56 | 1 |
+----------+---------------+--------------+---------------------+
3 rows in set (0.00 sec)
古いオーダー ID は、新しいオーダー ID に関連付けられます。52 >> 54 >> 55 >> 56
元の注文 ID が 52 の場合、最新の注文 ID、つまり 56 を返す必要があります。
where 句に b.order_id = 52 を追加すると機能しない次の自己結合を記述しました。
select max(a.new_order_id) from billing_order_history as a inner join billing_order_history as b on a.order_id = b.new_order_id
スキーマとサンプル レコード:
CREATE TABLE billing_order_history (
order_id bigint(20) ,
modify_action int(11) ,
new_order_id bigint(20) ,
modified_by_user_id bigint(20)
) ;
insert into billing_order_history values (52, 2, 54, 1), (54, 2, 55, 1), (55,2,56,1);