gpt4 book ai didi

当有多列连接时,SQL JOIN 限制为前 1

转载 作者:行者123 更新时间:2023-12-04 19:37:01 26 4
gpt4 key购买 nike

我需要加入2个表

tableA
----------
colA colB
A 1
B 2
C 3
D 4

tableB
----------
colC ColD ColE...
A A X
A B X
A C X
B A Y
B B Y
B C Y

以前我会这样加入表格:

SELECT *
FROM tableA a
JOIN tableB b
ON b.ColC = --This column SHOULD NORMALLY be a unique key column
(SELECT TOP 1 tempB.ColC
FROM tableB tempB
WHERE a.ColA = tempB.ColC
AND ...(other requirements here)
)

但这在这里不起作用,因为在这种情况下没有单一的唯一列。

编辑:所需的输出是一对一连接,以获取 table2 的 columnE 中的值以供其他地方使用。

再次编辑:期望的输出 -

ColA ColB ColC ColE ColD
A 1 A X any value of a,b,c (doesn't matter)
B 2 B Y any value of a,b,c

最佳答案

SQL 不做“无关紧要”1。假设您使用的是支持窗口功能的数据库系统,那么这应该可行:

SELECT *
FROM tableA a
JOIN (select *,ROW_NUMBER() OVER (PARTITION BY ColC ORDER BY ColD) as rn
from tableB) b
ON b.ColC = a.ColC and
b.rn = 1

在这种情况下,我决定要选择的行是按 ColD 最早排序的行。

1 我的意思是,即使不关心选择什么,您也必须为 SQL 指定您要选择的内容。如果您真的不在乎,您可以选择一个条件(例如@Martin Smith 建议的条件),它仍然会使事情变得模棱两可,并给优化器一些回旋余地——但您仍然必须提供规范.

关于当有多列连接时,SQL JOIN 限制为前 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17692672/

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