我正在学习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
?
谢谢!
答案 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;