从一个表中提取数据以用于SQL Server的另一个查询?

时间:2014-09-26 20:02:54

标签: sql sql-server

我正在学习SQL Server,因此我不太确定搜索此类内容的正确术语是什么。

我有两个表,People(ID,FirstName,LastName,Job):

ID   FirstName LastName   Job
 1     Barack    Obama    Null  // Obama is unemployed

Companies(ID,CompanyName,City,State):

ID   CompanyName           City        State
 1   Legislative Branch    Washington   DC
 2   Executive Branch      Washington   DC
 3   Judicial Branch       Washington   DC

我知道我可以运行像

这样的东西
update Persons 
set Job = '2' 
where ID = 1;

手动执行此操作,但这需要我知道Executive Branch的ID是2。

如何在CompanyName == 'Executive Branch'表中编写查找Companies的查询,然后从那里使用ID

ID   FirstName LastName   Job
----------------------------------
 1     Barack    Obama     2  //Obama now works for the Executive Branch

可能相关,对于这两个表使用ID会被视为“不良形式”,还是应该PersonID而另一个CompanyID

谢谢!

2 个答案:

答案 0 :(得分:1)

  

我如何编写一个查询CompanyName ==' US Gov'然后在公司表中使用那里的ID?

简单如下:

SELECT ID
FROM Companies
WHERE CompanyName = 'US Gov'

添加到您的示例中:

UPDATE People
SET Job = (SELECT ID
           FROM Companies
           WHERE CompanyName = 'US Gov')
WHERE ID IN (id1, id2, id3, ..., idn)

成为id1,id2等您要修改的人的ID。

答案 1 :(得分:0)

根据我对您的帖子的理解,您尝试将作业字段更新到另一个表上的相应ID字段。如果是这样,你会做这样的事情:

UPDATE People p
SET
   p.job = c.id
FROM
   p
INNER JOIN
   Companies c
ON p.id = c.id
WHERE
   c.id = 1;