【问题标题】:Get every 100th record starting from the top从顶部开始获取每 100 条记录
【发布时间】:2014-11-12 08:52:51
【问题描述】:

我有一张收入表,其中有 4436 条记录,有两列 - no_id(这是唯一的)和 payments。 我想提取一个查询,它会给出一行间隔为 100 的开始和结束列。一百的间隔可以根据用户输入而变化,可以是 1-250 之间的任何值。

原表

no_id, payments 

4436, 7540

4435, 7900

4434, 8000

4433, 4500
'
'
'
'

1,2000

我期待这样的输出-

start, end
4436,4337

4336,4237

4236,4137

4136,4037

我写了一个连接语句。我正在检查我的错误以及我需要更正的地方。

SELECT (table2.no_id*100)-100+1 as start, table1.no_id as end,
table1.payments FROM earnings as table1, earnings as table2 
WHERE (table1.no_id= table2.no_id*100 AND table2.no_id>MOD(t2.max_no,100))

JOIN

(SELECT max(t2.no_id) as max_no FROM  earnings as t2)

【问题讨论】:

    标签: mysql sql join xampp


    【解决方案1】:

    您可以像您一样加入查询max(no_id),并检查它与行的no_id 之间的区别。假设差距为100

    SELECT   no_id AS `start`, no_id - 100 + 1 AS `end`
    FROM     my_table
    JOIN     (SELECT MAX(no_id) AS max_no_id
              FROM   my_table)
             ON (max_no_id - no_id) % 100 = 0
    ORDER BY no_id DESC
    

    【讨论】:

    • 您假设 no_id 中没有间隙。
    • @fancyPants - 是的。 OP 似乎已经建议了(4436 个唯一值,最大值为 4436,最小值为 1)。
    • 谢谢@Mureinik。通过一个小的改变,即 no_id-100-1,这可以满足我的需要。很大的帮助。
    • @NiteshOswal 让我的操作员感到困惑 - 感谢您的关注!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多