如何查询和分组MySQL中的每个连续数字系列?
我有这个运费表,里面有一系列的收据号码。我想列出所有正在发行的or,不包括使系列分组的状态为“已取消”。 例如,我有这个收据stab 125001-125050,125020被取消,因此列表结果是:如何查询和分组MySQL中的每个连续数字系列?,mysql,sqlyog,Mysql,Sqlyog,我有这个运费表,里面有一系列的收据号码。我想列出所有正在发行的or,不包括使系列分组的状态为“已取消”。 例如,我有这个收据stab 125001-125050,125020被取消,因此列表结果是: +-------------------------------------------------------+ | OR Start | OR End | Quantity | Amount | +---------------------------------
+-------------------------------------------------------+
| OR Start | OR End | Quantity | Amount |
+-------------------------------------------------------+
| 125001 | 125019 | 19 | |
+-------------------------------------------------------+
| 125021 | 125050 | 30 | |
+-------------------------------------------------------+
这似乎是一个很难回答的问题。谢谢你的阅读,但我刚才已经做到了!:) 这是我的查询(忽略CGI中的其他字符):
我不确定你需要什么,但根据我的理解,你可以在声明之间使用
{.while SELECT `start`,`end`,or_prefix,or_suffix,SUM(a.amount) AS g_total,COUNT(*) AS qcount FROM (SELECT l.id AS `start`,( SELECT MIN(a.id) AS id FROM ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.status!='Cancelled' AND a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE' AND IF(a.status='Default' AND a.amount=0,0,1) ) AS a LEFT OUTER JOIN ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.status!='Cancelled' AND a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE' AND IF(a.status='Default' AND a.amount=0,0,1) ) AS b ON a.id = b.id - 1 WHERE b.id IS NULL AND a.id >= l.id ) AS `end` FROM ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.status!='Cancelled' AND a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE' AND IF(a.status='Default' AND a.amount=0,0,1) ) AS l LEFT OUTER JOIN ( SELECT a.or_no AS id FROM freight.`or_nos` a WHERE a.log_user = 0@user_teller AND DATE(a.or_date)='@user_date`DATE' AND IF(a.status='Default' AND a.amount=0,0,1) ) AS r ON r.id = l.id - 1 WHERE r.id IS NULL) AS k LEFT JOIN freight.`or_nos` a ON a.`or_no` BETWEEN k.start AND k.end AND DATE(a.`or_date`)='@user_date`DATE' AND a.log_user =0@user_teller AND IF(a.status='Default' AND a.amount=0,0,1) AND a.status!='Cancelled' GROUP BY `start`}
{.start}{.x.24.12:end}{.x`p0.40.-5:qcount}{.x`p2.57.-15:g_total}{.asc 255}
{.wend}{.asc 255}