2012-03-11 77 views
0

我有2個表格:employeeemployeedetails單個查詢中的SQL更新

employee看起來是這樣的:

id  name 
---------------- 
1  Suresh 
2  Ram 
3  Ravi 

employeedetails看起來是這樣的:

empid salary 
---------------- 
1  10000 
2  5000 
3  40000 

我想更新一個特定的人的salary領域。爲此,我知道第一個表的員工姓名。基於此,我需要編寫一個查詢,以單個查詢更新salary字段。我怎樣才能做到這一點?

例如,如果我必須更新Ravi的薪水詳細信息,我該如何在單個查詢中執行此操作?

+0

更新用?它是什麼 ? – 2012-03-11 16:48:48

+1

我相信你已經大大簡化了數據庫結構,但我可以問爲什麼員工信息是這樣分開的嗎?如果我理解正確,那肯定不是正常化 – 2012-03-11 20:48:06

回答

4
update employeedetails 
inner join employee on employeedetails.empid = employee.id 
set salary = 1000 
where employee.name = 'Ram' 
+1

我不認爲拉姆會是快樂的兔子;-) – cspolton 2012-03-11 18:33:37

3

試試這個:

update employeedetails set salary=1000000 where empid in (select id from employee where name='suresh'); 
+0

我懷疑薪水是否是「文字」。 – 2012-03-11 16:55:06

0
UPDATE employeedetails det 
SET salary=100 
WHERE EXISTS (SELECT NULL 
       FROM employee emp 
       WHERE name='Ravi' 
       AND det.empid = emp.id 
      ) 
; 
+0

評論downvote將不勝感激。我提出了另一種方法來完成尚未提出的更新。 – 2012-03-11 21:24:34

+0

+1這個問題只有'sql'標記,你是標準的SQL並且被廣泛實現(因爲是我的:)被接受的答案是專有語法(SQL Server?)我認爲你的答案比那些被接受的答案要好但SQL Server的民間用戶肯定喜歡他們的專有語法;) – onedaywhen 2012-03-12 11:38:50

1
MERGE INTO employeedetails 
    USING employee 
     ON employeedetails.empid = employee.id 
     AND employee.name = 'Ravi' 
WHEN MATCHED THEN 
    UPDATE 
     SET salary = 10000;