Sql server 查询字符串并从另一个表中使用ID(标识)号更新表

Sql server 查询字符串并从另一个表中使用ID(标识)号更新表,sql-server,insert,sql-update,multiple-tables,Sql Server,Insert,Sql Update,Multiple Tables,我有多个表,它们使用itemID相互关联(外键)。例如,我的主表具有程序的字符串名称(即Microsoft、Oracle等) 主表 ID | ProgNAME | ProID | ------------------------ 11 | Microsoft | | 12 | Oracle | | 13 | Microsoft | | 14 | Microsoft | | 15 | Oracle | | ID | P

我有多个表,它们使用itemID相互关联(外键)。例如,我的主表具有程序的字符串名称(即Microsoft、Oracle等)

主表

ID |  ProgNAME | ProID |
------------------------
11 | Microsoft |       |
12 | Oracle    |       |
13 | Microsoft |       |
14 | Microsoft |       |
15 | Oracle    |       |
ID  |  ProgNAME  | ProID  |
---------------------------
11  | Microsoft  |   1    |
12  | Oracle     |   2    |
13  | Microsoft  |   1    |
14  | Microsoft  |   1    |
15  | Oracle     |   2    |
可编程

ProgramID | ProgramName|
------------------------
     1    | Microsoft  |
     2    | Oracle     |
我想查询我的ProgramTable中链接到sting的关联值(标识),然后将关联值(标识)插入或更新我的MainTable到ProID字段中。因此,我的最终结果如下:

主表

ID |  ProgNAME | ProID |
------------------------
11 | Microsoft |       |
12 | Oracle    |       |
13 | Microsoft |       |
14 | Microsoft |       |
15 | Oracle    |       |
ID  |  ProgNAME  | ProID  |
---------------------------
11  | Microsoft  |   1    |
12  | Oracle     |   2    |
13  | Microsoft  |   1    |
14  | Microsoft  |   1    |
15  | Oracle     |   2    |
或者如果它只有两个值,你可以做一些像

UPDATE MainTable
SET ProID = CASE WHEN ProgramName = 'Microsoft' THEN 1
                 WHEN ProgramName = 'Oracle'    THEN 2
            END