怎样行使SQL MAX函数获取行的全部字段?
发布时间:2021-01-19 13:19:14 所属栏目:编程 来源:网络整理
导读:思量这个表(从 http://www.tizag.com/mysqlTutorial/mysqlmax.php): Id name type price 123451 Park's Great Hits Music 19.99 123452 Silly Puddy Toy 3.99 123453 Playstation Toy 89.95 123454 Men's T-Shirt Clothing 32.50 123455 Blouse Clothing 34.
思量这个表(从 http://www.tizag.com/mysqlTutorial/mysqlmax.php): Id name type price 123451 Park's Great Hits Music 19.99 123452 Silly Puddy Toy 3.99 123453 Playstation Toy 89.95 123454 Men's T-Shirt Clothing 32.50 123455 Blouse Clothing 34.97 123456 Electronica 2002 Music 3.99 123457 Country Tunes Music 21.55 123458 Watermelon Food 8.73 此SQL查询返回每种范例中最昂贵的项: Clothing $34.97 Food $8.73 Music $21.55 Toy $89.95 我还但愿为每一行获取属于上述最高价值的字段ID和名称. Id name type price 123455 Blouse Clothing 34.97 123458 Watermelon Food 8.73 123457 Country Tunes Music 21.55 123453 Playstation Toy 89.95 办理要领这是常常呈现的最大n组题目.我凡是的办理要领在逻辑上等同于@Martin Smith给出的谜底,但不行使子查询:SELECT T1.Id,T1.name,T1.type,T1.price FROM Table T1 LEFT OUTER JOIN Table T2 ON (T1.type = T2.type AND T1.price < T2.price) WHERE T2.price IS NULL; 到今朝为止,我的办理方案以及此线程上给出的全部其他办理方案都有也许为每个范例的值天生多行,假如多个产物共享沟通范例且两者具有沟通的最大价值.有步伐办理这个题目并冲破平手,但你必要汇报我们哪种产物“赢了”以防万一. 您必要一些其他属性,担保在全部行上都是独一的,至少对付具有沟通范例的行.譬喻,假如具有更高Id值的产物应该得胜,则可以通过以下方法办理题目: SELECT T1.Id,T1.price FROM Table T1 LEFT OUTER JOIN Table T2 ON (T1.type = T2.type AND (T1.price < T2.price OR T1.price = T2.price AND T1.Id < T2.Id)) WHERE T2.price IS NULL; (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |