Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单查询中的SQL更新_Sql - Fatal编程技术网

单查询中的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;