MySQL结果集应包含列中具有公共值的行

时间:2013-04-25 07:30:50

标签: mysql

我有一张表格如下:

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”列中具有相同值的行。任何帮助将不胜感激。

1 个答案:

答案 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。