Let's assume we're using this schema: CREATE TABLE A(Id INTEGER PRIMARY KEY, Field1, Flag); CREATE TABLE B(Id INTEGER PRIMARY KEY, Field_Temp, Price); CREATE INDEX B2 on B(Field_Temp, Price); CREATE INDEX A1 on A(Field1, Id);
You can extend Igor's pattern for more than 1 column: explain query plan update A set Flag = coalesce( (select 'DONE' from B where A.Field1 = B.Field_Temp and B.Price > 0), Flag), Id = coalesce( (select Id from B where A.Field1 = B.Field_Temp and B.Price > 0), Id); 0|0|TABLE A 0|0|TABLE B WITH INDEX B2 0|0|TABLE B WITH INDEX B2 When more than a few columns are being modified it is simpler and more efficient to use REPLACE INTO: -- adjust the columns in the select to match the order of -- the columns in the table to be updated explain query plan replace into A select B.Id, A.Field1, 'DONE' from A, B where A.Field1 = B.Field_Temp and B.Price > 0; 0|0|TABLE A 1|1|TABLE B WITH INDEX B2 --- Andre du Plessis <[EMAIL PROTECTED]> wrote: > The Id piece works great thanks! If I want to update 2 fields on table > A, the following syntax doesn't work as expected, as it updates all to > records to 'DONE'. > > update A set Flag = 'DONE', > Id = coalesce( > (select Id from B > where A.Field1 = B.Field_Temp and B.Price > 0), > Id); > > -----Original Message----- > From: Andre du Plessis > Sent: 16 July 2007 02:30 PM > To: Gavin McGuinness > Subject: FW: [sqlite] Re: inner join > > Here you go > It was answered by the mighty Igor, he's like THEE guru, guru's turn to > him for help, so don't question just follow :) > > -----Original Message----- > From: Igor Tandetnik [mailto:[EMAIL PROTECTED] > Sent: 16 July 2007 01:49 PM > To: SQLite > Subject: [sqlite] Re: inner join > > Andre du Plessis <[EMAIL PROTECTED]> wrote: > > I would like to be able to accomplish the following but don't see any > > support for inner joins on update queries. > > > > update A > > set Id = B.Id > > from A inner join B > > on A.Field1 = B.Field_Temp > > where B.Price > 0 > > update A set Id = coalesce( > (select Id from B > where A.Field1 = B.Field_Temp and B.Price > 0), > Id); > > Igor Tandetnik > > ------------------------------------------------------------------------ > ----- > To unsubscribe, send email to [EMAIL PROTECTED] > ------------------------------------------------------------------------ > ----- > > > ----------------------------------------------------------------------------- > To unsubscribe, send email to [EMAIL PROTECTED] > ----------------------------------------------------------------------------- > > ____________________________________________________________________________________ Now that's room service! Choose from over 150,000 hotels in 45,000 destinations on Yahoo! Travel to find your fit. http://farechase.yahoo.com/promo-generic-14795097 ----------------------------------------------------------------------------- To unsubscribe, send email to [EMAIL PROTECTED] -----------------------------------------------------------------------------