create table company
(
id int identity primary key,
names nvarchar(20)
)
insert into company values('中部印刷网')
insert into company values('睿智软件')
go
create table job
(
id int identity primary key,
jobName nvarchar(20),
companyName nvarchar(20),
)
go
insert into job values('程序员','中部印刷网')
insert into job values('美工','中部印刷网')
insert into job values('软件工程师','睿智软件')现在又这样的两张表,职位表中没有公司id
现在添加上一个公司id字段 companyId,以前的数据中该列的值都是null  有没有办法
使用一条sql语句 将这个字段的值修改为对应公司表中的id啊?
希望知道的朋友帮忙指点一下 谢谢了!

解决方案 »

  1.   

    create table company
    (
    id int identity primary key,
    names nvarchar(20)
    )
    insert into company(names) values('中部印刷网')
    insert into company(names) values('睿智软件')
    go
    create table job
    (
    id int identity primary key,
    jobName nvarchar(20),
    companyName nvarchar(20),
    companyId int
    )
    go
    insert into job(jobName,companyName,companyId) values('程序员','中部印刷网',null)
    insert into job(jobName,companyName,companyId) values('美工','中部印刷网',null)
    insert into job(jobName,companyName,companyId) values('软件工程师','睿智软件',null)
    go--1
    update job set companyId = (select id from company where names = t.companyName) from job t--2
    update job set companyId = m.id 
    from job t , company m where t.companyName = m.namesselect * from job
    /*
    id          jobName              companyName          companyId   
    ----------- -------------------- -------------------- ----------- 
    1           程序员                  中部印刷网                1
    2           美工                   中部印刷网                1
    3           软件工程师                睿智软件                 2(所影响的行数为 3 行)
    */drop table company , job
      

  2.   

    alter table job add company_id varchar(10) default nullupdate b set b.company_id=a.id 
      from job b,company a 
        where b.companyName=a.names
      

  3.   


    create table company
    (
    id int identity primary key,
    names nvarchar(20)
    )insert into company values('中部印刷网')
    insert into company values('睿智软件')create table job
    (
    id int identity primary key,
    jobName nvarchar(20),
    companyName nvarchar(20),
    )insert into job values('程序员','中部印刷网')
    insert into job values('美工','中部印刷网')
    insert into job values('软件工程师','睿智软件')
    --添加上一个公司id字段 companyId
    alter table job add companyId int--将这个字段的值修改为对应公司表中的id
    update j
    set j.companyId=c.id
    from job j
    inner join company c
    on j.companyName=c.names--结果
    select * from jobid          jobName              companyName          companyId
    ----------- -------------------- -------------------- -----------
    1           程序员                  中部印刷网                1
    2           美工                    中部印刷网                1
    3           软件工程师              睿智软件                  2(3 row(s) affected)
      

  4.   


    create table company
    (
    id int identity primary key,
    names nvarchar(20)
    )insert into company values('中部印刷网')
    insert into company values('睿智软件')create table job
    (
    id int identity primary key,
    jobName nvarchar(20),
    companyName nvarchar(20),
    )insert into job values('程序员','中部印刷网')
    insert into job values('美工','中部印刷网')
    insert into job values('软件工程师','睿智软件')
    --添加上一个公司id字段 companyId
    alter table job add companyId int--将这个字段的值修改为对应公司表中的id
    update j
    set j.companyId=c.id
    from job j
    inner join company c
    on j.companyName=c.names--结果
    select * from jobid          jobName              companyName          companyId
    ----------- -------------------- -------------------- -----------
    1           程序员                  中部印刷网                1
    2           美工                    中部印刷网                1
    3           软件工程师              睿智软件                  2(3 row(s) affected)