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

时间:2014-04-27 01:46:54

标签: sql-server insert sql-update multiple-tables

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

MainTable

ID |  ProgNAME | ProID |
------------------------
11 | Microsoft |       |
12 | Oracle    |       |
13 | Microsoft |       |
14 | Microsoft |       |
15 | Oracle    |       |

ProgramTable

ProgramID | ProgramName|
------------------------
     1    | Microsoft  |
     2    | Oracle     |

我想查询我的ProgramTable以获取链接到sting的关联值(标识),然后将我的MainTable与相关值(标识)一起插入或更新到ProID字段中。所以我的最终结果如下:

MainTable

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

2 个答案:

答案 0 :(得分:0)

UPDATE MainTable
    SET ProID = P.ProgramID
FROM ProgramTable AS P
WHERE MainTable.ProgNAME = P.ProgramName;

答案 1 :(得分:0)

UPDATE M
SET M.ProID = P.ProgramID
FROM MainTable M INNER JOIN  ProgramTable P
ON M.ProgramName = P.ProgramName

或者,如果它只有两个值,你可以做一些像......

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