sql - 哪个查询有效且正确,可以根据表中的最高值获取结果
问题描述
我有一个表“PlayerStats”,其中包含以下行
Id Runs HS
1 536 96
2 586 98
3 423 82
我写了以下(3)个查询。这是Sql server中最好最高效的
查询1
select * from PlayerStats order by Runs desc
查询2
SELECT *
FROM
(SELECT Runs,HS,DENSE_RANK() over(ORDER BY Runs desc) AS rk
FROM PlayerStats) as a
查询3
With empCTE2 as
(
SELECT Runs,HS,DENSE_RANK() over(ORDER BY Runs desc) as _rank from PlayerStats
)
select * from empCTE2
解决方案
简单是最好的:
select * from PlayerStats order by Runs desc;
-- you should avoid using `*` and you should expand column list to match
-- 2nd and 3rd
如果您只需要对结果集进行排序,则使用第一种方法。
第二个和第三个(子查询/CTE)查询实际上是相同的,所以它们之间不应该有任何区别。但有一个警告:
SELECT *
FROM(SELECT Runs,HS,DENSE_RANK() over(ORDER BY Runs desc) AS rk
FROM PlayerStats) as a
-- there is no ORDER BY on the most outerquery, so the order is not guaranteed
推荐阅读
- serial-port - Arduino IDE Ubuntu 端口灰显(未安装串行端口)
- c# - 从 nopCommerce 中的产品 id 访问基本 nop 模型自定义属性
- java - 字符串中的正斜杠不允许 HTML 为 JLabels 正常工作
- react-native - 如何在whatsapp上发送消息而不使用react-native打开应用程序?
- typescript - 推断的参数类型意外
- reverse-proxy - 如何使用 nginx 反向代理服务器限制对 RESTful API 的访问?
- javascript - 如何在 React Native 中渲染从数据库中检索的字符串中的换行符?
- adyen - Adyen Web SDK 如何记录产品信息?
- python - Python3如何读取由长度不同的空格分隔的文件
- javascript - Chrome 不会使用我预装的音频。它继续请求相同的文件