我希望你们每个人身体健康.

我在一个项目上工作,在这个项目中,我需要一些帮助来获取一些用户的立场基于一些标准.我用一些示例数据库和表显示了我的查询.

例如,我有一个数据库,其中有一个名为用户的表.

用户米比赛中,有3个项目.

  1. ID
  2. 用户
  3. 状态

我使用以下查询来获取所有用户的行位置,如果他们的状态=1,则使用以下查询:

SELECT
    @a:=@a+1 as serial_no, username
FROM 用户
    JOIN (SELECT @a:= 0) a
WHERE 状态=1;

但是,我想获得特定用户的位置使用用户名字段.例如:UserName="user3".

但是,当我运行下面的查询时,它返回给我这个用户名作为Serial_no存在于第一个位置.

SELECT
    @a:=@a+1 as serial_no, username
FROM 用户
    JOIN (SELECT @a:= 0) a
WHERE 状态=1 AND username="user3";

我已经创建了下面的SQL文件夹,所以你可以用一种更容易的方式来帮助我.

https://dbfIDdle.uk/QsXF0mBh

谢谢

推荐答案

如果您想知道行号,则需要将筛选行的时间推迟到对行进行编号之后:

SELECT *
FROM (
    SELECT
        @a:=@a+1 as serial_no, username
    FROM users
        JOIN (SELECT @a:= 0) a
    WHERE status=1
) AS t
WHERE t.username='user3';

如果您try 使用row_number()窗口函数,情况也是如此.

注意:这为子查询中匹配的行创建了一个临时表.

Mysql相关问答推荐

括号在SQL查询中的作用?

—符号在哪里条件""

MySQL INSERT INSERT ON DIPLICATE KEY UPDATE WITH COMPAY PRIMARY KEY失败

基于多行从表中 Select

Python - 执行原始 SQL 时获取更新查询 (Mysql) 的结果

Mysql - 按周分组但从 1 开始计数

关于设置为 NOT NULL 时的 CHAR 默认值

基于其列之一内的值查询模型

如何编写按天数汇总值的sql查询?

SQL使用LIMIT获取结果和结果中的行数

根据使用 mysql 的第一个过滤结果添加更多表行

非常规字符的不正确字符串值错误

按长度过滤 varbinary 字段

使用 MySQL 流式传输大型结果集

函数 mysql_real_escape_string 的 PDO 类似功能是什么?

重新加载 .env 变量而不重新启动服务器(Laravel 5,共享主机)

使用 mysql 处理非常大的数据

我的 PDO 声明不起作用

在 Postgresql 中模拟 MySQL 的 ORDER BY FIELD()

MySQL在哪里存储数据库文件?