无法从2个表中获取SQL语句更新?

时间:2011-05-02 09:28:11

标签: sql sql-update

我目前有一个包含两个表的数据库,一个保持可以说出工作详细信息和其他公司详细信息。 “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')

由于

3 个答案:

答案 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个表。要一次更新多个表,您有以下选项:

  1. 使用存储过程

  2. 创建select语句的视图并从视图中删除

  3. 使用触发器。