我目前有一个包含两个表的数据库,一个保持可以说出工作详细信息和其他公司详细信息。 “company_name”存在于“Jobs”表中,该表将在“names”字段下的“Companies”表中具有匹配的条目。我想基本上将“comp_id”的“Companies”表中的字段设置为“Jobs”表中字段“id”的值,“Companies”表中的“name”等于“ company_name“在”工作“表中。
我已创建下面的查询,我认为应该可以工作,但它不会返回受影响的行?有人可以帮我这个吗?
UPDATE `jobs`, `companies`
SET `comp_id` = 'companies.id'
WHERE ('companies.name' = 'jobs.company_name')
由于
答案 0 :(得分:1)
这个条件:
WHERE('companies.name'='jobs.company_name')
是一个问题(除非这是发布过程中的复制和粘贴错误)
您正在比较两个字符串文字(当然,因为它们不相同,所以您永远不会更新任何内容)。
原因是您使用单引号表示字符串文字。要引用列名,您需要使用双引号或之前使用过的反引号(假设您使用的是MySQL)。
答案 1 :(得分:0)
阅读你的问题,你只更新一张桌子而不是两张桌子?
我想基本上设置字段 “comp_id”的“公司”表格 是字段“id”的值 “乔布斯”表,WHERE中的“名称” “公司”表等于 “作业”表中的“company_name”。
您要做的只是将comp_id
表中的companies
列设置为id
表中jobs
列的name
列的值company_name
}和Update c
Set c.comp_id = j.Id
From dbo.Companies c
Join dbo.Jobs j on c.Name = j.Company_Name
列是一样的吗?
要使用MSSQL执行此操作,您可以执行以下操作:
{{1}}
答案 2 :(得分:0)
您只能在SQL Server的UPDATE语句中更新1个表。要一次更新多个表,您有以下选项:
使用存储过程
创建select语句的视图并从视图中删除
使用触发器。