我的表收入包含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)
答案 0 :(得分: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