【问题标题】:Mysql Query to create serial number in the result and where condition apply for that serial numberMysql查询以在结果中创建序列号以及该序列号的条件适用于何处
【发布时间】:2015-01-16 10:14:40
【问题描述】:

我需要一个查询,该查询会产生一个序列号,还需要一个过滤该序列号的条件,例如“序列号在 0 到 10 之间的位置”

Select  @rown:=@rown+1 serial_number, user_name as un from user
                            (select @rown := 0) as t
                            where                 
                             (@rown := (@rown + 1)) between 0 and 10
                            ORDER BY u.id_user asc

但我没有得到介于两者之间的结果, 请帮助我

【问题讨论】:

    标签: mysql sql select where-clause row-number


    【解决方案1】:

    你必须使用subquery来实现这个:

    试试这个:

    SELECT serial_number, un 
    FROM (SELECT (@rown:=@rown+1) AS serial_number, user_name AS un 
          FROM USER, (SELECT @rown := 0) AS t 
          ORDER BY u.id_user ASC
        ) AS A
    WHERE serial_number BETWEEN 0 AND 10 
    

    【讨论】:

    • 但是获取和显示需要很长时间。要获取的行是 6 秒,此查询也需要相同的时间。
    • @Saharsh 如果我的查询在您编写 atrown:=0 之前有内部联接,它将如何在该条件下工作,例如 pastebin.com/ZTcm0d39
    猜你喜欢
    • 2012-05-19
    • 1970-01-01
    • 2011-08-28
    • 2012-06-21
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-15
    相关资源
    最近更新 更多