On Wednesday, 13 November, 2019 13:26, Bart Smissaert <bart.smissa...@gmail.com> wrote:
>Thanks, the second one does the job as I need 1 or 0 and no nulls. >It saves me running 2 queries as before had: >UPDATE QR3PARAMS SET ED = CASE WHEN ED = 1 THEN 1 ELSE >(SELECT 1 FROM CURRENT_MED WHERE >(TERM_TEXT GLOB 'Sildenafil*' OR TERM_TEXT GLOB 'Tadalafil*' OR TERM_TEXT >GLOB 'Vardenafil*') >AND ID = QR3PARAMS.ID LIMIT 1) END You could of course have simply done this: UPDATE QR3PARAMS SET ED = CASE WHEN ED = 1 THEN 1 ELSE coalese((SELECT 1 FROM CURRENT_MED WHERE (TERM_TEXT GLOB 'Sildenafil*' OR TERM_TEXT GLOB 'Tadalafil*' OR TERM_TEXT GLOB 'Vardenafil*') AND ID = QR3PARAMS.ID LIMIT 1), 0) END; rather than the second update so as to coalesce nulls into 0 ... However the "set ed = exists(...) where ed is not 1" has the advantage that it saves the extra couple of machine instructions required to coalesce null to 0 and also only runs the correlated subquery when it needs to run rather than for each record. >On Wed, Nov 13, 2019 at 7:21 PM David Raymond <david.raym...@tomtom.com> >wrote: > >> Why not change it to something along the lines of: >> >> UPDATE QR3PARAMS >> SET ED = 1 >> WHERE >> ED is not 1 >> AND EXISTS ( >> SELECT 1 >> FROM CURRENT_MED >> WHERE >> ID = QR3PARAMS.ID >> AND ( >> TERM_TEXT GLOB 'Sildenafil*' >> OR >> TERM_TEXT GLOB 'Tadalafil*' >> OR >> TERM_TEXT GLOB 'Vardenafil*' >> ) >> ); >> >> which would leave ED alone if it didn't find anything, >> or the following, which would always set it to true or false >> >> UPDATE QR3PARAMS >> SET ED = EXISTS ( >> SELECT 1 >> FROM CURRENT_MED >> WHERE >> ID = QR3PARAMS.ID >> AND ( >> TERM_TEXT GLOB 'Sildenafil*' >> OR >> TERM_TEXT GLOB 'Tadalafil*' >> OR >> TERM_TEXT GLOB 'Vardenafil*' >> ) >> ) >> WHERE >> ED is not 1 >> ; -- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users >> >_______________________________________________ >sqlite-users mailing list >sqlite-users@mailinglists.sqlite.org >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users