我正在将数据写入表并为每批写入的数据分配一个“组 ID”。为了说明,请考虑下表。
GroupId Value
------- -----
1 a
1 b
1 c
2 a
2 b
3 a
3 b
3 c
3 d
在此示例中,有三组数据,每组具有相似但不同的值。
如何查询此表以查找包含给定值集的组?例如,如果我查询 (a,b,c),结果应该是第 1 组。同样,查询 (b,a) 应该导致第 2 组,查询 (a,b,c,e)应该导致空集。
我可以编写一个执行以下步骤的存储过程:
- 从 Groups 中选择不同的 GroupId - 并在本地存储
- 对于每个不同的 GroupId:
except
在输入值和表值(对于组)之间执行集差 (),反之亦然 - 如果两个集合差异操作都产生空集合,则返回 GroupId
这似乎有点过分,我希望利用 SQL 中的其他一些命令来简化。在这种情况下是否有更简单的方法来执行集合比较,或者选择包含查询的确切输入值的组 ID?