gpt4 book ai didi

sql - 是否可以通过多个字段连接表?

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:51 24 4
gpt4 key购买 nike

场景是这样的。我们有一个包含所有逻辑客户信息的客户表,以及一个我们将称之为“事件”的不同表。在事件表中,除其他外,还有客户的名字、姓氏和 ssn。

在客户表中,ssn 是一个 varchar(9),显然只用于数字,但是事件表的 ssn 是 varchar(11),用于数字加破折号。问题是一些客户可能是人或实体,ssn 用于区分它们:

人的 ssn 格式是 123-45-6789 而实体的格式是 12-3456789。

所以我想做的是运行一个查询,在名字和姓氏上连接 Customer 和 Event 表,这样我就可以检查 Event 表中 SSN 格式的差异。

我是一个相对较新的开发人员,所以我从未遇到过这种情况,也不知道是否可能。这是我当前的查询:

SELECT top 10 c.firstname, c.lastname, c.ssn, e.ssn, e.firstname, e.lastname
FROM customer c with(nolock)
LEFT OUTER JOIN [event] e with(nolock) on
c.firstname = e.firstname and
c.lastname = e.lastname

最佳答案

是的,您可以在 ON 子句条件中使用任何方式的函数(本地或用户定义)来使用多个字段。它与您将在 WHERE 子句中使用的一样,但位于略有不同的位置。示例:

FROM TABLE_A a
JOIN TABLE_B b ON b.col1 || ' ' || b.col2 = a.col

...或者:

FROM TABLE_A a
JOIN TABLE_B b ON ABS(b.col) = a.col

过滤发生在哪里重要吗?

WHEREON 子句,是否使用 INNER 连接无关紧要。但是,如果使用 OUTER 联接,这很重要,因为 ON 条件在 JOIN 之前/期间应用,而 WHERE 发生在之后——这可能会彻底改变结果集。

关于sql - 是否可以通过多个字段连接表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072902/

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