如何使用SQL MAX函数获取行的所有字段?
发布时间:2021-01-20 23:25:20 所属栏目:MsSql教程 来源:网络整理
导读:考虑这个表(从 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; (编辑:均轻资讯网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 根据Sql Server中的选定行生成插入脚本?
- HTML+Sass实现HambergurMenu(汉堡包式菜单)
- sql-server – 使用SQL Server进行负载平衡
- sql的存储过程定义有哪些方法,你知道几种?
- sql-server – 与事务组合触发
- sql-server-2008 – 动态sql错误:’CREATE TRIGGER’必须是
- sql-server – 在SAN环境中对SQL索引进行碎片整理是否有任何
- sql-server – 使用FreeTDS连接到MS SQL Server:错误20002
- sql-server – 服务代理已备份,现在正在接收,但似乎没有处理
- sql-server – 存储过程与内联SQL
站长推荐
- sql-server – 存储过程和OPTIMIZE FOR UNKNOWN
- sql – 深度嵌套的子查询因子分解(CTE)的性能降低
- 数据库设计 – 在数据库中存储总线路径
- 如何在SQL中生成导致给定节点的层次结构路径?
- sql-server – 我是否在unicode的“insert into”
- sqlserver中check约束是什么?如何创建?
- sql-server – 改变列SQL的DEFAULT约束
- sql-server – 触发无限期WAITFOR会增加日志文件
- sql – LEFT JOIN(OUTER JOIN)与INNER JOIN的条件
- sql-server – 在SQL Server中设计条件数据库关系
热点阅读


