当前位置: 首页 > 知识库问答 >
问题:

在mysql中使用where子句按降序获取此人的排名

养星汉
2023-03-14

我已经试过了http://sqlfiddle.com/#!2/df2ec/1获取数据:我正在尝试获取名称A的排名,它是4,但我无法做到这一点。

SELECT @rownum := @rownum + 1 AS rank, name, vote 
FROM uservotes, (SELECT @rownum := 0) t ORDER BY vote DESC

在数据表中:

create table uservotes(id int, name varchar(50), vote int);

INSERT INTO uservotes VALUES
(1, 'A', 34),
(2, 'B', 80),
(3, 'bA', 30),
(4, 'C', 8),
(5, 'D', 4),
(6, 'E', 14),
(7, 'F', 304),
(8, 'AA', 42),
(9, 'Ab', 6),
(10, 'Aa', 10);

我无法得到在哪里从句。基本上我想知道哪个等级是基于投票的名字。我尝试了:

SELECT @rownum := @rownum + 1 AS rank, name, vote 
FROM uservotes WHERE name= A , (SELECT @rownum := 0) t ORDER BY vote DESC

但我犯了个错误。我真的很感谢你的帮助。提前谢谢。

错误:

共有3个答案

沈俊晤
2023-03-14
SELECT @rownum := @rownum + 1 AS rank, name, vote 
FROM uservotes, (SELECT @rownum := 0) t where name='A' ORDER BY vote DESC

为了获得军衔:

select rank, name, vote
from (SELECT @rownum := @rownum + 1 AS rank, name, vote 
FROM uservotes, (SELECT @rownum := 0) t ORDER BY vote DESC) z
where name='A';
年运珧
2023-03-14
select a.name, (select count(*) + 1 from uservotes b where (a.vote > b.vote)) as rank 
from uservotes a having name="A" order by rank
宰烈
2023-03-14

1) 试试这个:

SELECT 
    @i:=@i+1 AS rn, 
    t.*
FROM 
    uservotes AS t,
    (SELECT @i:=0) AS tbl
    ORDER BY vote desc

2)然后得到A的特定行很容易:

select * From
(
SELECT 
    @i:=@i+1 AS rn, 
    t.*
FROM 
    uservotes AS t,
    (SELECT @i:=0) AS tbl
ORDER BY vote desc

) x where x.name = 'A'
 类似资料:
  • 问题内容: 假设我有这张桌子 我想返回第一行,其中所有先前现金的总和大于某个值: 因此,例如,如果我要返回第一行,其中所有先前现金的总和都大于500,则应返回到第3行 如何使用mysql语句执行此操作? 使用 不起作用 问题答案: 您只能在HAVING子句中使用聚合进行比较: 该子句要求您定义GROUP BY子句。 要获得第一行,其中所有先前现金的总和都大于某个值,请使用: 由于聚合函数发生在子查

  • 问题内容: 我想搜索我的表,其中有一列名字和一列姓氏。我目前接受来自某个字段的搜索字词,并将其与两列进行比较,一次 这对于单个单词搜索词可以正常工作,但结果集包含名称为“ Larry”的所有人。但是,如果有人输入名字然后输入空格,然后输入姓氏,我希望搜索结果更窄。我已经尝试了以下方法,但没有成功。 有什么建议吗? 编辑: 我正在测试的名称是“拉里·史密斯”。数据库将“ Larry”存储在“ fir

  • 如何将行号用作where子句的一部分? 我有,假设,25个数据,我只想得到前10行或得到从11到20的行。 如何使用行号?我无法执行下面的查询 更新:问题是,在我的where子句中,row_number在表UPDATE2:Thanks Guys中是未知的!不管怎样,我找到了这个。选择行号=行号的位置

  • 问题内容: 我正在从具有整数id值的大型表(数百万行)中选择一组帐户记录。从某种意义上说,查询是最基本的。我正在做的是建立一个大型的逗号分隔列表,并将其作为“ in”子句传递到查询中。现在,结果是完全无序的。我想做的是按“ in”子句中的值顺序返回结果。 我想我将不得不建立一个临时表并进行联接,这是我想避免的,但可能无法做到。 有什么想法吗?现在,由于我们正试图限制输出大小,每个查询的大小上限为6

  • 我正在使用PySpark(Python 2.7.9/Spark 1.3.1),并有一个需要过滤的dataframe GroupObject 但它会抛出以下错误。

  • 问题内容: 我有一个简单的选择查询- 我希望此结果按提供名称的顺序排序,也就是说,结果集中的第一行应该是名称= BBB的那一行,第二行是AAA,第三行是ZZZ。 在SQL Server中这可能吗?我想知道如果有一种简单且简短的方法(例如大约5到6行代码)来做到这一点。 问题答案: 您可以创建一个有序的拆分函数: 然后略微更改您的输入(一个逗号分隔的列表,而不是三个单独的字符串):