Sql 找不到玩家的最大年龄
我是SQL的新手。 我想知道哪个球员年龄最大。 这是我的桌子。。 不知怎的,我的查询出错了。 你能告诉我哪里做错了吗。Sql 找不到玩家的最大年龄,sql,sql-server,Sql,Sql Server,我是SQL的新手。 我想知道哪个球员年龄最大。 这是我的桌子。。 不知怎的,我的查询出错了。 你能告诉我哪里做错了吗。 谢谢。SQL有一个selecttop命令,允许您检索设置数量的行。您可以从按年龄描述的玩家顺序中选择前1名作为“最年长的人” 这将要做的是:首先检索所有玩家,按年龄降序排序(最老的先排序),然后取第一个。SQL有一个selecttop命令,允许您检索一组行。您可以从按年龄描述的玩家顺序中选择前1名作为“最年长的人” select * from players where a
谢谢。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感兴趣的话,这个问题解决了这个方法:虽然有点复杂,但在更大的数据集上速度更快。