oracle left join只保留一条相同记录
时间: 2023-06-30 14:21:34 浏览: 227
oracel重复记录只保留一条
如果你想通过 Oracle 的 LEFT JOIN 操作只保留一条相同记录,可以使用 ROW_NUMBER() 函数来实现。
例如,假设你有两个表 A 和 B,其中表 A 中有多条记录与表 B 中的记录匹配。要保留每个 A 记录中的第一条匹配记录,可以使用以下查询:
```
SELECT *
FROM A
LEFT JOIN (
SELECT B.*, ROW_NUMBER() OVER (PARTITION BY B.id ORDER BY B.some_column) AS rn
FROM B
) B2 ON A.id = B2.id AND B2.rn = 1;
```
在这个查询中,我们首先对表 B 进行了一个内部查询,使用 ROW_NUMBER() 函数为每个匹配的记录添加了一个行号 rn。PARTITION BY B.id 意味着我们将每个 B 记录组合成一个分区,然后按某个列(例如 some_column)对它们进行排序。然后我们将此查询结果与表 A 进行 LEFT JOIN 操作,并且只保留 rn = 1 的记录,这样就只保留了每个 A 记录的第一条匹配记录。
阅读全文