【发布时间】:2021-08-23 14:25:44
【问题描述】:
有没有办法根据表中的 2 列仅选择多对多记录。我不想选择数据集中的 N:1、1:1 和 N:1 值,而只想选择 N:N 的值。这意味着我只想选择 Column1 中的值在 Column2 中有多个相关值的记录,但 Column2 中的部分(或全部)值在 Column1 中也有多个相关值。
在下面我有一个表格,我已经在 Relationship 列中显示了我要查找的内容。所以我只希望能够选择记录 8。当然不使用列 Relationship,因为我已经手动添加了它以了解我想说的话。
DROP TABLE IF EXISTS TestManytoMany;
CREATE TABLE TestManytoMany
(Column1 nvarchar NULL,
Column2 nvarchar NULL,
Relationship nvarchar(4) NULL);
INSERT INTO TestManytoMany
VALUES
('A','1','n:1')
,('A','2','n:1')
,('A','3','n:1')
,('B','4','1:n')
,('C','4','1:n')
,('D','5','1:1')
,('E','6','n:1')
,('E','7','n:n')
,('F','7','1:n')
SELECT * FROM TestManytoMany
我在互联网上找不到类似的东西,也许有人有什么建议?
亲切的问候, 伊戈尔
【问题讨论】:
-
您的
F, 7行只有1:n,我认为这是一个错字? -
另外,前两列中的数据是否是唯一的,或者您是否有重复项也应考虑用于
n:n检查? -
如果是这种情况,那么
E, 6就是n:1并且只有E, 7是n:n。这些确实应该有不同的标签,我会马上编辑它。 -
此表中可能有完全重复的记录。
标签: sql-server-2012