我有一个奇怪的问题,那就是当我第一次运行sql命令时,它显示错误的结果,但是当我第二次运行相同的代码时,结果是正确的。
错误的结果是:



预期结果是:



sql命令是:

                SELECT srNumber, end_on, start_on, teamEntityId
                FROM (
                        SELECT srNumber, end_on, start_on, teamEntityId,
                            @lastrow := IF(@sr_Number = srNumber, @lastrow + 1,
                                            IF(@sr_Number := srNumber, 1, 0)) AS lastrow
                        FROM assign
                        CROSS JOIN (SELECT @lastrow := 0, @sr_Number = '') AS vars
                        ORDER By srNumber, assignId DESC) AS t
                WHERE t.lastrow = 1 AND t.teamEntityId = '00000168752ac161-02420aff00230001'

最佳答案

在较新的MySQL版本中,需要在使用变量之前对数据进行排序。因此,请替换:

FROM assign


与:

FROM (SELECT a.* FROM assign a ORDER BY srNumber, assignId DESC) a

关于mysql - 第一次后mysql工作正常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55045413/

10-09 18:09