'重要关系'的列在选择列表中是无效的,因为它不包含在聚合函数或GROUP BY子句中

问题描述:

我想检索具有最大值'PNRno'列的行,其中PNRno是主Tktrsrv的关键,并与多个表的realatioship。代码写为:'重要关系'的列在选择列表中是无效的,因为它不包含在聚合函数或GROUP BY子句中

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

请帮帮我。

+1

您没有使用GR另一个表中的最高OUP BY适当。 – JonH 2011-12-28 16:30:08

使用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) 

如果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);