SQL query to update table only if all values for column match

sql update column with value from another column in the same table
sql update column with value from another table
update column based on another column sql
postgres update column with value from another column
update sql
how to update multiple rows of single column in sql
update one column from another column in same table oracle
update all columns in a table sql

I'm playing around with queries and tables and have a table that looks like this.

Name   |      Job     | Status
===============================
Test1  |  Completed   | Pending
Test1  |  50%         | Pending
Test2  |  Completed   | Pending
Test2  |  Completed   | Pending
Test2  |  Completed   | Pending

Is there a query I can use that will look at the name and job column, and if the job column is "completed" for all matching names, update the status column to say "completed"?

To clarify, in the above example, all the "Test2" jobs are marked as completed, so I would like the status to also say completed - but only if ALL the Test2 jobs say completed.


Here is one possible solution for SQL Server:

UPDATE yourTable t1
SET Status = 'Completed'
WHERE
    Job = 'Completed' AND
    NOT EXISTS (SELECT 1 FROM yourTable t2
                WHERE t1.Name = t2.Name AND
                      (t2.Job <> 'Completed' OR t2.Job IS NULL));

SQL UPDATE Statement - Updating Data in a Table, How do you update a column with different values in SQL? Another approach is to use a joined update query. The exact SQL that is required depends on which database system you're using, but here's an example for SQL Server: update tblA set Fld1 = B.Fld1 from tblA A inner join tblB B on A.Fld2 = B.Fld2 Note that only rows that have a match are updated.


Another option;

UPDATE Table1 SET Status = 'Completed' WHERE Name IN (
  SELECT Name 
  FROM Table1
  GROUP BY Name
  HAVING COUNT(*) = SUM(CASE WHEN Job='Completed' THEN 1 ELSE 0 END)
)

The inner select finds the names with all Job values set to Completed, and the update just updates Status of the rows with the found names.

A DBfiddle for testing.

How to UPDATE from SELECT in SQL Server, How do you update a column based on data from another table? Conditional Update To do a conditional update depending on whether the current value of a column matches the condition, you can add a WHERE clause which specifies this. The database will first find rows which match the WHERE clause and then only perform updates on those rows. UPDATE table SET col = new_value WHERE col = old_value;


Try this

UPDATE Table_Name SET Status = 'Completed' WHERE Name = 'Completed' AND Job = 'Completed'

Is there a way to SELECT and UPDATE rows at the same time , and inserting records as necessary for the two to match. First, specify the table name that you want to change data in the UPDATE clause. Second, assign a new value for the column that you want to update. In case you want to update data in multiple columns, each column = value pair is separated by a comma (,). Third, specify which rows you want to update in the WHERE clause.


Please try it.

UPDATE yourTable  
SET Status = 'Completed'
WHERE
    Job = 'Completed' AND
     Name not in (select Name from yourTable where Job<>'Completed')

Different ways to update rows in a table using SQL progressing, How do you update and select in the same query? The SQL UPDATE statement is used to change column values. Though an update statement can modify columns data from many sources, such as literal values or other query results, the basic format is the same. There are three components to an UPDATE statement: The table you wish to change.


You can try the following

create table #temp (Name varchar(20), Job varchar(20), sStatus varchar(20))

insert into #temp values 
('Test1'  ,  'Completed'   , 'Pending'),
('Test1'  ,  '50%'         , 'Pending'),
('Test2'  ,  'Completed'   , 'Pending'),
('Test2'  ,  'Completed'   , 'Pending'),
('Test2'  ,  'Completed'   , 'Pending')

update #temp set sStatus = 'Completed'
where Name not in (
    select a.Name from #temp a
    where a.Job <> 'Completed'
)

select * from #temp

Use SQL UPDATE to Query and Modify Data, To do a conditional update depending on whether the current value of a column matches the condition, you can add a WHERE clause which specifies this. The database will first find rows which match the WHERE clause and then only perform updates on those rows. SQL HOME SQL Intro SQL Syntax SQL Select SQL Select Distinct SQL Where SQL And, Or, Not SQL Order By SQL Insert Into SQL Null Values SQL Update SQL Delete SQL Select Top SQL Min and Max SQL Count, Avg, Sum SQL Like SQL Wildcards SQL In SQL Between SQL Aliases SQL Joins SQL Inner Join SQL Left Join SQL Right Join SQL Full Join SQL Self Join SQL


Updating All Rows in a Table | Modifying Data with SQL, The SQL UPDATE statement is used to modify column values within a SQL The SQL UPDATE statement is used to change data within columns of a SQL Server data table. All the examples for this lesson are based on Microsoft SQL Server Recall the INNER JOIN clause is used to match the rows from one table to  However, if you are a SQL Server user, you can simply swap them using a single update statement. SWAP Column UPDATE TestTable SET Col1 = Col2, Col2 = Col1; When you run above update statement, the values of the columns will be swapped in SQL Server. There is no need for temporary column, variable or storage location in SQL Server. You can


Modifying Rows with UPDATE, Sometimes you need to update values in all rows. Maybe to fix an error or update the status of something. In this video we'll update data! in table #1 columns address and phone2 is empty and columns gender and birthdate values is same as table #2. How can I read data from table #2 and update address and phone2 in table #1 with values from table #2 address and phone columns when gender and birthdate is the same in each row? for example: this is some data in Table #1


SQL UPDATE Statement, Column values may be updated either with constants, identifiers to other data sets, or expressions. This is only relevant if table is inherited by any other tables. The WHERE clause constrains any modifications to rows that match the criteria If the WHERE clause is omitted, an UPDATE statement will modify each of the  Takes all records of the Pupils table and the ones of the Marks table; And filters them, keeping only the records where the Pupil Name matches the name on the Marks table. The technical name is a Join. This is often referred to as a "Multiplication", because the number of records in the intermediary table (before filtering) is a multiplication