'重要关系'的列在选择列表中是无效的,因为它不包含在聚合函数或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);
请帮帮我。
答
使用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);
您没有使用GR另一个表中的最高OUP BY适当。 – JonH 2011-12-28 16:30:08