I had a similar problem recently, the way I solved it looks like that (it might not be pretty, but it works)
SELECT t1.name, t2.deleted FROM t2 INNER JOIN ( SELECT t2.id, MAX(t2.time) AS last_time FROM t2 GROUP BY t2.id ) AS t3 ON t2.id = t3.id AND t2.time = t3.last_time INNER JOIN t1 ON t1.id = t2.id; Since SQLite support only STATIC inner queries, it's the only way I found to do it in a single query. Tell me if it worked for you. Simon B. On Fri, 2004-01-23 at 15:07, Michael Hunley wrote: > I have the following two table defs: > CREATE TABLE t1(id INTEGER PRIMARY KEY,name VARCHAR(64)); > CREATE TABLE t2(id INTEGER,time INTEGER,deleted INTEGER(1) PRIMARY > KEY(id,time)); > > My question is, how can I: "select t1.name,t2.deleted from t1 join t2 using > id" but only keep each row where t2.time is the max for that id? > > To put that another way, is there a single select I can issue which does > the equivalent of doing: > > CREATE TEMPORARY TABLE temp(id INTEGER,time INTEGER); > INSERT INTO temp (id,time) SELECT id,MAX(time),deleted FROM t2 GROUP BY id; > SELECT t1.name,t2.deleted FROM temp JOIN t1 USING id JOIN t2 USING id WHERE > t2.time=temp.time; > > I am hoping for some syntax that is the valid SQL/SQLite equivalent of: > SELECT t1.name,t2.deleted FROM t1 join t2 USING id WHERE t2.time=MAX(t2.time) > > thanks for any help. > > Michael Hunley > Senior Engineer > PocketPurchase, Inc. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] >