从两个多列中获取不同值对

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

同一个表中的两列具有多对多关系。换句话说,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
sql many-to-many distinct-values
1个回答
0
投票
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 子句

© www.soinside.com 2019 - 2024. All rights reserved.