我的代码最初只能创建auto-increment
列,然后才会开始排序。这会导致自动增量列中的非顺序编号。
SET @i:=0;
SELECT
@i:=@i+1 AS autoincr_id,
billings.id AS bill_id,
daily_reports.id AS report_id,
billings.billingDate AS billing_date
FROM lineitems
INNER JOIN billings
ON billings.order_id=lineitems.orderID
INNER JOIN daily_reports
ON billings.`billingDate` BETWEEN DATE_ADD(daily_reports.`referenceDate`, INTERVAL 7 HOUR ) AND DATE_ADD(daily_reports.`referenceDate`, INTERVAL 31 HOUR )
ORDER BY billings.id, autoincr_id
LIMIT 200
见图解说明我的问题
答案 0 :(得分:0)
猜猜使用提供的表来强制排序,然后使用该变量将解决您的问题。
您还可以使用CROSS JOIN初始化用户变量this.gridData
,而无需使用两个查询。
<强>查询强>
@i
答案 1 :(得分:0)
创建一个new
表,其中的行按所需顺序编号seq_num
:
CREATE TABLE new (
seq_num INT UNSIGNED AUTO_INCREMENT,
PRIMARY KEY seq_num
) ENGINE=InnoDB
SELECT ...
ORDER BY ...
警告:如果您处于多主复制设置中,AUTO_INCREMENT
将不会有连续的ID。这是因为auto_increment_increment
赢了1
。