> Not in principle. But I think changes that break backwards > compatibility would be more trouble than they're worth for > something like this. In the absence of clearer guidance > from sql-92, it's probably more important to be compatible > with earlier sqlite versions than with mysql and friends. > > Maybe it would be better to document the current behaviour > and move on. > > Dan.
It would be tricky to document the current behavior accurately. Compound queries with ORDER BY without aliases have never really worked in a uniform way in sqlite. I don't think fixing the issue will trouble people, as most must use column aliases and subqueries as a workaround for these problems anyway. I think at the very least, the inconsistency of the column names in the result set should be resolved: SQLite version 3.5.3 Enter ".help" for instructions sqlite> create table foo(a); sqlite> insert into foo values(1); sqlite> .header on sqlite> select foo.a from foo; a 1 sqlite> select foo.a from foo union all select foo.a from foo; a 1 1 sqlite> select foo.a from foo union all select foo.a from foo order by 1; foo.a 1 1 sqlite> select foo.a from foo union all select foo.a from foo group by 1; a 1 1 Notice the column headings. Why does the column name change in the result set because of the addition of an ORDER BY but not with a GROUP BY clause or with a regular non-compound query? And should regular queries support expressions in ORDER BY, while compound statements not? sqlite> select a from foo order by a*a-3*a; 1 sqlite> select a from foo union all select a+5 as a from foo order by a*a-3*a; SQL error: ORDER BY term number 1 does not match any result column The only way to get this query to work is to use this workaround: sqlite> select * from (select a from foo union all select a+5 from foo) order by a*a-3*a; 1 6 Other databases allow expressions in compound SELECT/ORDER BY without the subquery: mysql> select a from foo union all select a+5 as a from foo order by a*a-3*a; +------+ | a | +------+ | 1 | | 6 | +------+ I only have MySQL to test with here. I'm fairly certain it works on most other open source and popular commercial databases. ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------