gpt4 book ai didi

sql - PL/SQL - 如何从连接表中返回单行

转载 作者:行者123 更新时间:2023-12-04 10:21:34 27 4
gpt4 key购买 nike

这可能很简单,我只是目前没有看到树木的木材。在 Oracle 中,我根据表 A 的主键从表 A 中选择连接到表 B 的记录。但是表 B 可以有多个记录与表 A 的主键匹配。这导致我的查询从表中返回重复的行A. 以下是我的查询的简化版本:

TableA                TableB
_______ _________
1, Sec1 2, 11/01/2011
2, Sec2 2
3, Sec3 5, 10/01/2011
4, Sec4 6, 10/01/2011

Select A.SecID, A.SecName, B.DateSent from tableA A
inner join tableB B on A.SecID = B.SecID

这是为 Sec2 返回 2 条记录 - 我怎样才能让它只为 Sec2 返回 1 条记录?我试过使用不同的和独特的,但仍然得到相同的结果。

最佳答案

SELECT  secid, secname
FROM tableA
WHERE secid IN
(
SELECT secid
FROM tableb
)

如果您需要来自 tableB 的记录还有:
SELECT  secid, secname, datesent
FROM (
SELECT a.secid, a.secname, b.datesent, ROW_NUMBER() OVER (PARTITION BY a.secid ORDER BY b.datesent DESC) AS rn
FROM tableA a
JOIN tableB b
ON b.secid = a.secid
)
WHERE rn = 1
ORDER BY子句控制 b 上的多条记录中的哪一条你会得到。

关于sql - PL/SQL - 如何从连接表中返回单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com