使用mysql执行此查询的最佳算法

问题描述:

Iam正在寻找使用mysql执行此查询的最佳算法。使用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 

我想用它给我的指标取决于room_no例如每个旅行者SQL功能添加另一列

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 ......等等,希望能帮助我解决这个问题。

更多描述

我需要的是根据例如房间的房间号发出命令的foreach旅行者1具有2个出行因此第1行(旅行者1)将带索引0处的旅行者2将(索引1 )然后在房间2开始有(3位旅客)订单将旅客1在房间2取指数0和旅客2在房间2将采取指数1和旅客3在房间2将采取指数2如上面的第二个表

+0

如果您使用'ctrl-K',您可以将文本格式设置为代码。或者只是给每一行添加4个空格 –

+0

听起来你需要一个计数器。但是你的问题还不清楚,请尝试重新措辞以便我们更好地理解要求。 – htm11h

+0

你'订购'有'joinnum'和'id'哪一个告诉你房间预订时的订单? –

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) 
性能需要