0

我想检索具有“PNRno”列的最大值的行,其中 PNRno 是 Tktrsrv 的主键并且与多个表有关联。代码写成:

 Select
 PNRcd,PNRno, Tktno, Tno, Tname, Doj, Class, brding, rsrvdupto
 from Tktrsrv 
 GROUP BY PNRno  
 Having PNRno= Max(PNRno);

请帮我。

4

2 回答 2

2

使用时GROUP BY,您不能使用列列表中未聚合或未在GROUP BY子句中提及的任何列。

如果你只想选择 PNRno 最大值的那一行,你甚至不需要GROUP BY; 使用这个查询:

Select
    PNRcd,PNRno, Tktno, Tno, Tname, Doj, Class, brding, rsrvdupto
  from Tktrsrv 
  WHERE PNRno = (SELECT Max(PNRno) FROM Tktsrv)
于 2011-12-28T16:30:55.140 回答
0

如果 Prdno 是主键,那么您不需要进行分组,因为每个值在 tktrsrv 表中只能存在一次。

因此,您可以选择最大值

select max(PNRno) from tktrsrv

如果您想从另一个具有 PNRno 外键的表中进行选择,则 tktqueue 是我编写的表名)

select * from tktqueue
 where PNRno=(select max(PNRno) from tktrsvr);

同样,如果您想从 tktrsrv 中选择另一个表中最高的数据

select * from tktrsvr 
  where PNRno=(select max(PNRno) from tktqueue);
于 2011-12-28T16:37:34.487 回答