我只想为u.classno,u.userno选择具有最大b.enddate的行。但它不起作用。
select u.classno, u.userno, b.enddate
from libUser u
join book b on b.id = u.bookid
group by u.classno, u.userno
having b.enddate=max(b.enddate) //doesn't works发布于 2013-09-09 16:19:48
有什么问题:
select u.classno, u.userno, MAX(b.enddate)
from libUser u
join book b on b.id = u.bookid
group by u.classno, u.userno发布于 2013-09-09 16:28:35
在官方的MySQL文档中,Here是一篇很好的文章,但是那里只使用标准的MySQL,所以它可以应用于您正在使用的任何关系数据库管理系统。
包含某一列的分组最大值的行
任务:对于每件商品,找出价格最贵的经销商。
这个问题可以通过下面这样的子查询来解决:
从商店s1 WHERE price=中选择商品,经销商,价格( SELECT MAX(s2.price)从商店s2中选择MAX(s2.Price),其中s1.article = s2.article);
前面的示例使用相关子查询,这可能效率低下(请参阅第13.2.10.7节,“相关子查询”)。解决该问题的其他可能方法是在FROM子句或左连接中使用不相关的子查询。
不相关子查询:
shop s1 JOIN ( SELECT文章,MAX(价格)作为逐条从店铺分组中的价格)作为s2 ON s1.article = s2.article和s1.price = s2.price;
左连接:
从店铺中选择s1.article,s1.reator,s1.price,加入s1.article = s2.article s1 s1.price < s2.price中的店铺s2,其中s2.article为空;
左连接的工作原理是:当s1.price达到最大值时,没有s2.price具有更大的值,并且s2行的值将为NULL。
https://stackoverflow.com/questions/18694094
复制相似问题