【问题标题】:SQL Query Concatenate two columns during Inner JOINSQL Query 在 Inner JOIN 期间连接两列
【发布时间】:2012-04-07 08:30:42
【问题描述】:

我有表 A 和表 B,表 A 有几列,包括 A1 和 A2。表 B 也有几列。 我的查询要求我连接 A1 和 A2 中的值,然后在 B1 上进行内部连接。

例子:

Select * 
From A
INNER JOIN B
ON CONCAT(A1,A2) = B1.

显然这不是它应该如何工作的。有人可以帮我解答这个问题吗?

谢谢。

【问题讨论】:

  • 它不如在 ID 上链接高效,但如果这是您需要的,那么这就是您所需要的。除了最基本的要求之外,您无法简化问题!
  • MS-SQL?如果那是你的 qs。 :-P
  • 好吧,我已经将示例放置在最具代表性的系统中以连接列。但是是的,MS-SQL 是我问题的答案。

标签: sql sql-server tsql join concatenation


【解决方案1】:

Sample taken from

表格地理

region_name store_name
East    Boston
East    New York
West    Los Angeles
West    San Diego

示例 1: 对于 MySQL/Oracle:

    SELECT CONCAT(region_name,store_name) FROM Geography 
    WHERE store_name = 'Boston';
Result: 'EastBoston'

示例 2: 对于甲骨文:

    SELECT region_name || ' ' || store_name FROM Geography 
    WHERE store_name = 'Boston';
Result: 'East Boston'

示例 3: 对于 SQL Server:

    SELECT region_name + ' ' + store_name FROM Geography 
    WHERE store_name = 'Boston';
Result: 'East Boston'

从这里开始,您可以适应两个表而没有太大问题。 如有疑问,请使用虚拟表使内容更具可读性。

如果有疑问,请查看已回答的其他问题以了解更多详情。

StackOverFlow Similar Question

【讨论】:

    【解决方案2】:

    试试这个:

    Select *  
    From A 
    INNER JOIN B 
    ON A1 + A2 = B1
    

    【讨论】:

    • @user583227 - 无论哪种方式,这都是答案,如果性能不好,您应该规范化您的表并正确索引它们。 +1
    • 六分钟似乎过分了。它正在读取/返回多少数据?另外,请记住,根据数据类型或 A1 或 A2 是否为空,连接可能会出现问题。
    • @user583227,你为什么接受佩德罗对安德烈的回答?似乎他更直接地回答了您的问题并且获得了最多的支持。虽然 Pedro 的答案看起来更好并且提供了更多详细信息,但如果在您的查询中 B1 是 555ABC,A1 是 555,A2 是 ABC,由于添加了空格,他的答案将不起作用 - 而 Andrey 的答案会很好。只是好奇您的选择背后是否有其他原因(我不认识任何一个用户)
    • 我同意 Kevin 和 Lamak 的观点。 Andrey 的查询不会导致性能问题。导致问题的是表结构,而不是查询。 Pedro 的回答肯定措辞非常好,尽管是对不同问题的回答。
    • 好的。糟糕的性能背后的魔鬼是我不是在表上运行查询,而是在视图上运行。因此,所有的等待。感谢您为我指出正确的问题。
    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2016-12-23
    • 2021-10-09
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    相关资源
    最近更新 更多