Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 找不到玩家的最大年龄_Sql_Sql Server - Fatal编程技术网

Sql 找不到玩家的最大年龄

Sql 找不到玩家的最大年龄,sql,sql-server,Sql,Sql Server,我是SQL的新手。 我想知道哪个球员年龄最大。 这是我的桌子。。 不知怎的,我的查询出错了。 你能告诉我哪里做错了吗。 谢谢。SQL有一个selecttop命令,允许您检索设置数量的行。您可以从按年龄描述的玩家顺序中选择前1名作为“最年长的人” 这将要做的是:首先检索所有玩家,按年龄降序排序(最老的先排序),然后取第一个。SQL有一个selecttop命令,允许您检索一组行。您可以从按年龄描述的玩家顺序中选择前1名作为“最年长的人” select * from players where a

我是SQL的新手。 我想知道哪个球员年龄最大。 这是我的桌子。。

不知怎的,我的查询出错了。 你能告诉我哪里做错了吗。
谢谢。

SQL有一个
selecttop
命令,允许您检索设置数量的行。您可以从按年龄描述的玩家顺序中选择前1名作为“最年长的人”


这将要做的是:首先检索所有玩家,按年龄降序排序(最老的先排序),然后取第一个。

SQL有一个
selecttop
命令,允许您检索一组行。您可以从按年龄描述的玩家顺序中选择前1名作为“最年长的人”

select * from players 
where age = (select max(age) as Oldest_Player from players);
limit 1

这将要做的是:首先检索所有玩家,按年龄降序排列(最老的第一个),然后选择第一个。

您可以使用以下行编号:

select * from players 
where age = (select max(age) as Oldest_Player from players);
limit 1
Select * from (
   Select *, RowN = Row_Number() over(order by age desc) from Players 
   ) a Where a.RowN = 1

您可以按如下方式使用行号:

Select * from (
   Select *, RowN = Row_Number() over(order by age desc) from Players 
   ) a Where a.RowN = 1

这是非常低效的,因为排序是O(n logn),但max是线性的,只有O(n)。不过,我不确定SQL中是否有更好的方法,不是SQL专家。这是真的,但我相信MAX是在语句的
SELECT
部分中使用的,在该部分中,您必须首先传递以确定
MAX
,存储它,然后使用
WHERE
查找它。如果OP感兴趣的话,这个问题解决了这个方法:虽然有点复杂,但在较大的数据集上速度更快。这是非常低效的,因为排序是O(n log n),但max是线性的,只有O(n)。不过,我不确定SQL中是否有更好的方法,不是SQL专家。这是真的,但我相信MAX是在语句的
SELECT
部分中使用的,在该部分中,您必须首先传递以确定
MAX
,存储它,然后使用
WHERE
查找它。如果OP感兴趣的话,这个问题解决了这个方法:虽然有点复杂,但在更大的数据集上速度更快。