单查询中的SQL更新
我有两个表:单查询中的SQL更新,sql,Sql,我有两个表:employee和employeedetails employee如下所示: id name ---------------- 1 Suresh 2 Ram 3 Ravi empid salary ---------------- 1 10000 2 5000 3 40000 employeedetails如下所示: id name ---------------- 1
employee
和employeedetails
employee
如下所示:
id name
----------------
1 Suresh
2 Ram
3 Ravi
empid salary
----------------
1 10000
2 5000
3 40000
employeedetails
如下所示:
id name
----------------
1 Suresh
2 Ram
3 Ravi
empid salary
----------------
1 10000
2 5000
3 40000
我想更新某个特定人员的salary
字段。为此,我知道第一个表的员工名称。基于此,我需要编写一个查询,用单个查询更新salary
字段。我该怎么做
例如,如果我必须更新Ravi的工资详细信息,我如何在一个查询中完成这项工作?试试以下方法:
update employeedetails set salary=1000000 where empid in (select id from employee where name='suresh');
我怀疑薪水是不是太高了。我认为拉姆不会高兴的我相信您已经大大简化了数据库结构,但是我可以问一下,为什么员工信息会这样分割吗?如果我理解正确的话,这肯定不是为了正常化,请对否决票发表评论。我提出了另一种尚未提出的更新方法。+1这个问题只有“sql”标记,您的是标准sql,并且得到了广泛的实施(我也是:)公认的答案是专有语法(sql Server?)我认为您的答案优于公认的答案,因为这些原因,但sql Server用户肯定喜欢他们的专有语法;)
MERGE INTO employeedetails
USING employee
ON employeedetails.empid = employee.id
AND employee.name = 'Ravi'
WHEN MATCHED THEN
UPDATE
SET salary = 10000;