David Burström <david.burst...@gmail.com> wrote: > SELECT starttime, endtime from entry LEFT JOIN interval ON > interval.entryid = entry.id GROUP BY entry.id HAVING starttime = > MAX(starttime);
The behavior of this statement is unspecified. In standard SQL, it is syntactically invalid - in a GROUP BY statement, all columns that appear in SELECT or HAVING clauses must be either mentioned in GROUP BY, or appear only in expressions that are arguments of aggregate functions. As an extension, SQLite allows ungrouped columns in these contexts. The value of such an expression is the column value taken from some random, unspecified row belonging to the group. Thus, your condition of "HAVING starttime = MAX(starttime)" is a gamble. You are saying, pick some random row from the group, and if that row just happens to contain the largest value across the group, then include the group in the resultset, otherwise throw it away. With 3.6.22, you got lucky and won the gamble. With 3.7.2, the implementation details have changed so that a different row is now being picked, and you are losing the gamble (and blaming the roulette wheel). -- Igor Tandetnik _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users