Time to upgrade. --- Christopher Backhouse <[EMAIL PROTECTED]> wrote: > I repeated exactly what you have there and confirm it doesn't work for me. > > [EMAIL PROTECTED]:/tmp$ sqlite3 testing > SQLite version 3.3.13 > Enter ".help" for instructions > sqlite> CREATE TABLE foo(bar text, baz text); > sqlite> INSERT INTO "foo" VALUES('123','345'); > sqlite> INSERT INTO "foo" VALUES('123','6789'); > sqlite> INSERT INTO "foo" VALUES('23456','13'); > sqlite> INSERT INTO "foo" VALUES('432','13'); > sqlite> INSERT INTO "foo" VALUES('7654321','13'); > sqlite> INSERT INTO "foo" VALUES('1234567','345'); > sqlite> select * from foo; > 123|345 > 123|6789 > 23456|13 > 432|13 > 7654321|13 > 1234567|345 > sqlite> select distinct bar, baz as z from foo where bar in (select bar > from foo where baz==z order by length(bar) desc limit 1); > sqlite> .q > > > Joe Wilson wrote: > > --- Christopher Backhouse <[EMAIL PROTECTED]> wrote: > >> I have a table: > >> create table foo(bar text,baz text); > >> > >> I want to produce a list of all bar's paired with the longest baz they > >> are ever associated with. I came up with the following query: > >> > >> select distinct bar,baz as z from foo where bar in (select bar from foo > >> where baz==z order by length(bar) desc limit 1); > >> > >> This query works (although it might not be the best way to do this), > >> except in the case where bar is a string that can be interpreted as a > >> number in which case that value of bar never appears in the output. > >> I assume that in one part of the query it is being treated as a number > >> and at another as a string, such that they compare not-equal. > >> > >> Shouldn't the "text" in the table definition cause promotion to string > >> in every case? > >> > >> My question is how do i cast bar back to a string, or otherwise cause > >> sqlite to do the right thing in this case? Or alternatively is there a > >> different query which would avoid this problem? > > > > I don't see the problem. > > Are you seeing something different? > > > > SQLite version 3.4.0 > > > > CREATE TABLE foo(bar text, baz text); > > INSERT INTO "foo" VALUES('123','345'); > > INSERT INTO "foo" VALUES('123','6789'); > > INSERT INTO "foo" VALUES('23456','13'); > > INSERT INTO "foo" VALUES('432','13'); > > INSERT INTO "foo" VALUES('7654321','13'); > > INSERT INTO "foo" VALUES('1234567','345'); > > > > select distinct bar, baz as z from foo where bar in ( > > select bar from foo where baz==z > > order by length(bar) desc limit 1); > > > > bar z > > ---------- ---------- > > 123 6789 > > 7654321 13 > > 1234567 345
____________________________________________________________________________________ Take the Internet to Go: Yahoo!Go puts the Internet in your pocket: mail, news, photos & more. http://mobile.yahoo.com/go?refer=1GNXIC ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------