同一个表中的两列具有多对多关系。换句话说,ID 1 可能与 matchID A 或 B 匹配。同时,matchID A 也可能与 ID 1、2 或 3 匹配。
身份证 | 比赛ID |
---|---|
1 | A |
1 | B |
2 | A |
2 | B |
3 | A |
3 | C |
输出的每个 ID 应该仅与一个不同的 matchID 链接。例如,一旦 ID 1 与 mathchID A 链接,任何其他 ID 都不应与 matchID A 匹配。
我想得到以下输出:
身份证 | 比赛ID |
---|---|
1 | A |
2 | B |
3 | C |
WITH RankedMatches AS (
SELECT
ID,
matchID,
ROW_NUMBER() OVER (PARTITION BY matchID ORDER BY ID) AS rn
FROM
your
_table_name
)
SELECT
ID,
matchID
FROM
RankedMatches
WHERE
rn = 1;
此查询假设当给定的 matchID 存在多个匹配项时,您希望优先考虑最小 ID。如果您想优先考虑不同的列,您可以相应地调整 ROW_NUMBER() 函数中的 ORDER BY 子句