Which SQL query correctly updates only those rows?
hard📝 Application Q9 of 15
SQL - Table Relationships
You have tables Employee and EmployeeDetails with a one-to-one relationship. You want to add a new column 'EmergencyContact' to EmployeeDetails but only for employees who have a detail record. Which SQL query correctly updates only those rows?
AUPDATE EmployeeDetails SET EmergencyContact = '123-456' WHERE EmployeeID IN (SELECT * FROM Employee);
BUPDATE Employee SET EmergencyContact = '123-456' WHERE EmployeeID IN (SELECT EmployeeID FROM EmployeeDetails);
CUPDATE EmployeeDetails SET EmergencyContact = '123-456';
DUPDATE EmployeeDetails SET EmergencyContact = '123-456' WHERE EXISTS (SELECT 1 FROM Employee WHERE Employee.EmployeeID = EmployeeDetails.EmployeeID);
Step-by-Step Solution
Solution:
Step 1: Identify the correct table to update
EmergencyContact is in EmployeeDetails, so update must target this table.
Step 2: Filter rows with matching EmployeeID in Employee
Using WHERE EXISTS with correlated subquery ensures only EmployeeDetails rows linked to Employee are updated.
Final Answer:
UPDATE EmployeeDetails SET EmergencyContact = '123-456' WHERE EXISTS (SELECT 1 FROM Employee WHERE Employee.EmployeeID = EmployeeDetails.EmployeeID); -> Option D
Quick Check:
Use WHERE EXISTS for conditional update in one-to-one [OK]
Quick Trick:Use WHERE EXISTS to update related one-to-one rows [OK]
Common Mistakes:
MISTAKES
Updating Employee instead of EmployeeDetails
Updating all EmployeeDetails without filter
Using IN with unrelated subquery
Master "Table Relationships" in SQL
9 interactive learning modes - each teaches the same concept differently