如何基于另一个表值插入记录

问题描述 投票:0回答:1

我有以下三个表:

Permission

| PermissionId | PermissionName |
+--------------+----------------+
| 1            | A              |
| 2            | B              |
| 3            | C              |
| 100          | D              |

Group

| GroupId | GroupLevel | GroupName            |
+---------+------------+----------------------+
| 1       | 0          | System Administrator |
| 7       | 0          | Test Group 100       |
| 8       | 20         | Test Group 200       |
| 9       | 20         | test                 |
| 10      | 50         | TestGroup01          |
| 11      | 51         | TestUser02           |
| 12      | 52         | TestUser03           |

GroupPermission

| GroupPermissionId | FkGroupId | FkPermissionId |
+-------------------+-----------+----------------+
| 1                 | 1         | 1              |
| 2                 | 1         | 2              |
| 3                 | 1         | 3              |
| 4                 | 1         | 4              |

我需要将记录插入到GroupPermission表中,如果表GroupGroupLevel列具有0那么我需要使用其GroupId,并需要将值插入到GroupPermission表中,作为该特定ID和100。

为了上面的示例表记录,我需要将以下两个记录插入到GroupPermission表中,

| FkGroupId | FkPermissionId |
+-----------+----------------+
| 1         | 100            |
| 7         | 100            |

我该怎么办

sql sql-server
1个回答
0
投票

这个问题不是很清楚,我只能假设值100是静态值,并且您实际上没有外键,因为列名暗示了这一点。同样,您确实应该避免为对象名称使用诸如“ Group”之类的保留字。这使事情变得更加困难和混乱。

插入的简单版本可能看起来像这样。

insert GroupPermission
(
    FkGroupId
    , FkPermissionId
)
select g.GroupId
    , 100
from [Group] g
where g.GroupLevel = 0
© www.soinside.com 2019 - 2024. All rights reserved.