-2

我有一张如下表:

id, section, row, seat
1  Stalls    A     25
2  Stalls    A     26
3  Stalls    B     1
4  Stalls    B     2
5  Stalls    B     3
6  Stalls    B     4
7  Lounge    C     1
8  Lounge    C     2

正如您可能猜到的那样,这张桌子代表了一个座位计划。我需要能够查询表格以给我相邻的座位。例如,如果我想要三个座位,它应该给我座位号 3,4,5 而不是 1,2,3。但是,如果我想要两个座位,它应该给我座位 id 的 1,2

在 sql 术语中,我需要能够查询在“section”和“row”列中具有相同值的行。任何帮助,将不胜感激。

4

1 回答 1

1
select id, section, row,seat,rank
from (select id, section, row,seat, 
      @rank:=if(@lastsection=section and @lastrow=row and @lastseat=seat-1,@rank,@rank+1) rank,
      @lastsection:=section,@lastrow:=row,@lastseat:=seat
      from tblA, (select @lastsection:='',@lastrow:='',@lastseat:='', @rank:=1)v
      order by section,row,seat)s
GROUP BY rank
HAVING count(rank)>=numberofseatdesired;

这将返回具有您想要的相邻座位号的 id、section、row、starting seat。您可能需要第二个查询来检索每个座位的详细 ID。

于 2013-04-25T07:51:47.107 回答