我正在处理PHP中的一些文件并使用MySQL来存储结果。这里是我的表看起来像:限制行减去两列之和等于一个值
tblConverts
:
ID ACCESS_KEY STATUS TOTAL_PAGES PROCESSED_PAGES
---- ------------ ----------- ------------- -----------------
1 upYP5RbNqQ COMPLETED 10 10
2 IeH02qBAtV WAITING 32 18
3 Di5sCWxA2p REJECTED 28 0
4 Aft54Xhr3f WAITING 40 0
5 TzU1VMoeQF WAITING 30 0
我要让我的批处理脚本在“等待”标记的记录工作,直到它到达一个点,两列(TOTAL_PAGES的总和 - 例如PROCESSED_PAGES)等于100。
我实现这一点的方法是查询:
SELECT * FROM tblConverts WHERE status = 'WAITING' AND TOTAL_PAGES > PROCESSED_PAGES LIMIT 500
然后在PHP脚本我做一个循环,直到计数器达到100,但使用这种方法结合SQL和PHP是减去行不是一个好主意。我怎样才能实现这个功能只有一个SQL查询?
UPDATE:
试想每执行20页(整行,没有每一行),第一和第三行是不匹配的条件,所以我们会在第二,第四和第五行工作。从第二行开始,我们有14页(32 - 18)。由于第2行的剩余页面少于20个,它应该查找下一个页面。下一个(#4)有40个页面,所以剩余页面总数(14 + 40)大于20.因此它必须停在这里并返回行(#2和#4)。
那么,你用'TOTAL_PAGES> PROCESSED_PAGES'写了第一个查询。你知道你想要什么:'TOTAL PAGES - PROCESSED_PAGES = 100'(尽管实际上'> ='或'<='可能是更好的选择)。你如何_思考你的查询应该改变? – Chris
@Chris我更新了我的问题,如果我无法解释,请告诉我。 – Bablod