Thread
-
UPDATE with multiple WHERE conditions
Rich Shepard <rshepard@appl-ecosys.com> — 2024-06-12T21:28:32Z
I have a table with 3492 rows. I want to update a boolean column from 'false' to 'true' for 295 rows based on the value of another column. Is there a way to access a file with those condition values? If not, should I create a temporary table with one column containing those values, or do I write a psql script with 295 lines, one for each row to be updated? TIA, Rich
-
Re: UPDATE with multiple WHERE conditions
Muhammad Salahuddin Manzoor <salahuddin.m@bitnine.net> — 2024-06-12T21:31:43Z
Greetings, You can use Temporary table. You could create a temporary table with one column containing the condition values and then use it to update your main table. This approach can be more flexible and cleaner than writing a script with multiple update statements. -- Create a temporary table with one column containing the condition values CREATE TEMPORARY TABLE temp_conditions (condition_value TEXT); -- Insert the condition values into the temporary table INSERT INTO temp_conditions (condition_value) VALUES ('value1'), ('value2'), ('value3'), -- Add more values as needed... ('value295'); -- Update the boolean column based on the condition values UPDATE your_table SET boolean_column = true WHERE condition_column IN (SELECT condition_value FROM temp_conditions); -- Clean up: drop the temporary table DROP TABLE IF EXISTS temp_conditions; *Salahuddin (살라후딘**)* On Thu, 13 Jun 2024 at 02:28, Rich Shepard <rshepard@appl-ecosys.com> wrote: > I have a table with 3492 rows. I want to update a boolean column from > 'false' to 'true' for 295 rows based on the value of another column. > > Is there a way to access a file with those condition values? If not, should > I create a temporary table with one column containing those values, or do I > write a psql script with 295 lines, one for each row to be updated? > > TIA, > > Rich > > > -
Re: UPDATE with multiple WHERE conditions
Rich Shepard <rshepard@appl-ecosys.com> — 2024-06-12T21:34:09Z
On Thu, 13 Jun 2024, Muhammad Salahuddin Manzoor wrote: > You can use Temporary table. You could create a temporary table with one > column containing the condition values and then use it to update your main > table. This approach can be more flexible and cleaner than writing a > script with multiple update statements. Salahuddin, Thank you. I thought this would be the best approach. Regards, Rich
-
Re: UPDATE with multiple WHERE conditions
Ron Johnson <ronljohnsonjr@gmail.com> — 2024-06-12T21:48:26Z
On Wed, Jun 12, 2024 at 5:28 PM Rich Shepard <rshepard@appl-ecosys.com> wrote: > I have a table with 3492 rows. I want to update a boolean column from > 'false' to 'true' for 295 rows based on the value of another column. > > Is there a way to access a file with those condition values? If not, should > I create a temporary table with one column containing those values, or do I > write a psql script with 295 lines, one for each row to be updated? > A plain UPDATE might work. UPDATE to_be_updated a SET bool_col = true FROM other_table b WHERE a.pk = b.pk AND b.field3 = mumble; (You can join them, right?)
-
Re: UPDATE with multiple WHERE conditions
Rob Sargent <robjsargent@gmail.com> — 2024-06-12T22:05:26Z
On 6/12/24 15:48, Ron Johnson wrote: > On Wed, Jun 12, 2024 at 5:28 PM Rich Shepard > <rshepard@appl-ecosys.com> wrote: > > I have a table with 3492 rows. I want to update a boolean column from > 'false' to 'true' for 295 rows based on the value of another column. > > Is there a way to access a file with those condition values? If > not, should > I create a temporary table with one column containing those > values, or do I > write a psql script with 295 lines, one for each row to be updated? > > > A plain UPDATE might work. > UPDATE to_be_updated a > SET bool_col = true > FROM other_table b > WHERE a.pk <http://a.pk> = b.pk <http://b.pk> > AND b.field3 = mumble; > > (You can join them, right?) Add "begin;" to that and try it. If you don't get exactly UPDATE 295 reported, then "rollback;";
-
Re: UPDATE with multiple WHERE conditions
David G. Johnston <david.g.johnston@gmail.com> — 2024-06-12T22:09:57Z
On Wed, Jun 12, 2024 at 2:28 PM Rich Shepard <rshepard@appl-ecosys.com> wrote: > I have a table with 3492 rows. I want to update a boolean column from > 'false' to 'true' for 295 rows based on the value of another column. > > Is there a way to access a file with those condition values? > I'll often just use a spreadsheet to build the 295 update commands and copy-paste them into psql or whatnot. David J.
-
Re: UPDATE with multiple WHERE conditions
Rich Shepard <rshepard@appl-ecosys.com> — 2024-06-12T22:41:14Z
On Wed, 12 Jun 2024, David G. Johnston wrote: > I'll often just use a spreadsheet to build the 295 update commands and > copy-paste them into psql or whatnot. David, I'll create and use a temporary table. Thanks, Rich
-
Re: UPDATE with multiple WHERE conditions
Rich Shepard <rshepard@appl-ecosys.com> — 2024-06-12T22:46:37Z
On Wed, 12 Jun 2024, Ron Johnson wrote: > A plain UPDATE might work. > > UPDATE to_be_updated a > SET bool_col = true > FROM other_table b > WHERE a.pk = b.pk > AND b.field3 = mumble; > > (You can join them, right?) Thanks, Ron. Rich
-
Re: UPDATE with multiple WHERE conditions
Rich Shepard <rshepard@appl-ecosys.com> — 2024-06-12T22:47:24Z
On Wed, 12 Jun 2024, Rob Sargent wrote: > Add "begin;" to that and try it. If you don't get exactly UPDATE 295 > reported, then "rollback;"; Got it, thanks. Rich
-
Re: UPDATE with multiple WHERE conditions
Alvaro Herrera <alvherre@alvh.no-ip.org> — 2024-06-13T10:34:25Z
On 2024-Jun-12, David G. Johnston wrote: > On Wed, Jun 12, 2024 at 2:28 PM Rich Shepard <rshepard@appl-ecosys.com> > wrote: > > > I have a table with 3492 rows. I want to update a boolean column from > > 'false' to 'true' for 295 rows based on the value of another column. > > I'll often just use a spreadsheet to build the 295 update commands and > copy-paste them into psql or whatnot. A closely related technique: if you have a query that generates the UPDATE commands you need, you can run it under \gexec in psql, and they'll be executed. -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/ Al principio era UNIX, y UNIX habló y dijo: "Hello world\n". No dijo "Hello New Jersey\n", ni "Hello USA\n".