查询以限制左连接的结果

Query to restrict results from left join

我有以下查询

select S.id, X.id, 15,15,1 from schema_1.tbl_2638 S
JOIN schema_1.tbl_2634_customid X on S.field_1=x.fullname

即 returns 以下结果,您可以看到第一列与第二列重复 table。

1   1   15  15  1
2   3   15  15  1
2   2   15  15  1
3   5   15  15  1
3   4   15  15  1

我正在尝试获取一个查询,该查询只会为每个第一个 ID 提供一行,并为第二个 ID 提供最小值。所以我想要一个结果:

1   1   15  15  1
2   2   15  15  1
3   4   15  15  1

我的 SQL 技能有点生疏,我该如何编写查询以提供上述结果?

从你的结果你可以做到,这就是为了达到你的结果,对于更复杂的结构,你总是可以看看window fucntions

select S.id, MIN(X.id) x_id, 15,15,1 from schema_1.tbl_2638 S
JOIN schema_1.tbl_2634_customid X on S.field_1=x.fullname
GROUP BY 1,3,4,5

window 函数可以使用,总是需要一个外层 SELECT

SELECT
    s_id,x_idm a,b,c
FROM
    (select S.id as s_id, X.id as x_id, 15 a ,15 b,1 c
    , ROW_NUMBER() OVER (PARTITION BY S.id ORDER BY X.id ASC) rn
    from schema_1.tbl_2638 S
    JOIN schema_1.tbl_2634_customid X on S.field_1=x.fullname)
WHERE rn = 1

或作为 CTE

WITH CTE as (select S.id as s_id, X.id as x_id, 15 a ,15 b,1 c
    , ROW_NUMBER() OVER (PARTITION BY S.id ORDER BY X.id ASC) rn
    from schema_1.tbl_2638 S
    JOIN schema_1.tbl_2634_customid X on S.field_1=x.fullname)
SELECT s_id,x_id,a,b,c FROM CTE WHERE rn = 1