gpt4 book ai didi

sql - 仅在三个表中连接一行

转载 作者:行者123 更新时间:2023-12-02 08:21:01 24 4
gpt4 key购买 nike

(我的问题已经被问了很多次,涉及两个表,并且已经回答了 hereherehere 。但是我不知道如何对涉及的三个表做同样的事情.)

我有三个表,A、B 和 C,其中 A 有很多 B,B 有很多 C。我想连接这些表并为每个 A 选择零行或一行,哪一行应该基于 C 中的条件.

例如,假设:

SELECT
a.aId
,b.bId
,c.cId
FROM
a
INNER JOIN b ON b.aId=a.aId
INNER JOIN c ON c.bId=b.bId
WHERE
c.someColumn='foo'

...产生以下结果:

aId   bId   cId
=== === ===
1 11 101
1 12 102
1 12 103
2 21 201
2 21 203
2 22 202

...然后我想,例如,检索两个不同的 A 行,即具有最高 cId 的行。

aId   bId   cId
=== === ===
1 12 103
2 21 203

最佳答案

您可以使用 ROW_NUMBER:

WITH Cte AS (
SELECT
a.aId,
b.bId,
c.cId,
rn = ROW_NUMBER() OVER (PARTITION BY a.aId ORDER BY c.cId DESC)
FROM a
INNER JOIN b
ON b.aId = a.aId
INNER JOIN c
ON c.bId = b.bId
WHERE c.someColumn = 'foo'
)
SELECT
aId, bId, cId
FROM Cte
WHERE rn = 1

关于sql - 仅在三个表中连接一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37314945/

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