我正在寻找使用mysql进行此查询的最佳算法。
SELECT room_no,fname,lname,title,gender,age,text
FROM travelers WHERE reservation_id='9911'
ORDER BY joinnum ASC, id ASC
结果
room_no
1 infant tess Mr M 0
1 infant2 te1ss Mr M 0
2 tes3 test66 Mr M 0
2 tes3 test Mr M 0
2 ss33 test66 Mr M 0
我想使用sql功能添加另一个列,它为每个旅行者提供索引,具体取决于room_no,例如
traveler_order room_no
0 1 infant tess Mr M 0
1 1 infant2 te1ss Mr M 0
0 2 tes3 test66 Mr M 0
1 2 tes3 test Mr M 0
2 2 ss33 test66 Mr M 0
这意味着根据房间给出一个索引foreach行,即房间1有2个旅行者,选择参数将给出第0行的第0行和第1行的第1行,但第2行开始新房间,因此它将给第2行索引0 1 2 ...等我希望能帮我解决这个问题。
更多说明
我需要的是根据房间号码给出一个旅行者的订单,例如房间1有2个旅行者因此第1行(旅行者1)将取指数0旅行者2将采取(指数1)然后在房间2开始有(3位旅行者)订单将是旅客1在房间2取索引0和旅客2在房间2将取索引1和旅客3在房间2将取索引2如上面的第二个表
答案 0 :(得分:1)
SELECT @seq := @seq + 1 AS traveler_order,
room_no, fname, lname, title, gender, age, text
FROM travelers
JOIN ( SELECT @seq := -1 ) AS initialize
WHERE reservation_id='9911'
ORDER BY joinnum ASC, id ASC
此外,
INDEX(reservation_id, joinnum, id)
是表现的理想选择。