Обсуждение: UPDATE with multiple WHERE conditions

Поиск
Список
Период
Сортировка

UPDATE with multiple WHERE conditions

От
Rich Shepard
Дата:
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
Дата:
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
Дата:
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
Дата:
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
Дата:


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 = 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"
Дата:
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
Дата:
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
Дата:
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
Дата:
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
Дата:
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".