我有一张表格如下:
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
正如您可能猜到的那样,该表代表了一个座位计划。我需要能够查询表格给我相邻的座位。例如,如果我想要三个座位,它应该给我座位ID 3,4,5而不是1,2,3。但是,如果我想要两个座位,它应该给我座位ID 1,2
在sql术语中,我需要能够查询“section”和“row”列中具有相同值的行。任何帮助将不胜感激。
答案 0 :(得分: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,起始座位。您可能需要第二个查询来检索每个座位的详细ID。