gpt4 book ai didi

sql - 在两个维度上连接两个表而不交叉连接

转载 作者:行者123 更新时间:2023-11-29 13:12:07 25 4
gpt4 key购买 nike

我有一个包含 ID 和域的表 (T1)。另一个具有名称和域(T2)。第三个具有名称和 ID (T3)。

在简化形式中,我的查询如下:

SELECT *
FROM T2
LEFT JOIN T1
ON T2.domain = T1.domain
)
LEFT JOIN T3
ON T1.name = T3.name

我正在寻找的输出是一个包含列的列表:“ID”、“名称”和“域”,其中域或名称匹配以获得 ID。我面临的挑战是一个域可以匹配两个名称,这会产生一组误报(因为名称匹配,也会归因于错误的 ID)。

在进行此类联接时,我应该遵循的任何最佳实践都会非常有帮助。

谢谢S

最佳答案

我想你想要:

SELECT t2.name, t2.domain, coalesce(t1.id, t2.id)
FROM T2 LEFT JOIN
T1
ON T2.domain = T1.domain LEFT JOIN
T3
ON T2.name = T3.name AND
t1.domain IS NULL; -- no match on T1

这首先匹配。然后,如果没有 domain 匹配,则使用 name

关于sql - 在两个维度上连接两个表而不交叉连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53484844/

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