2012-03-22 80 views
4

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

例子:

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

显然,这是它不应该是如何工作的。有人可以在这个查询中给我一只手吗?

谢谢。

+0

哪种类型的Sql? – 2012-03-22 18:11:34

+0

它不像链接ID那样高效,但如果这是你需要的,那么这就是你需要的。除了最基本的要求之外,你不能简化问题! – Blindy 2012-03-22 18:11:51

+0

MS-SQL?如果这是你的QS。 :-P – Nir 2012-03-22 18:12:45

回答

13

尝试这种情况:

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

这并没有发生任何错误,但已经超过了6分钟。我的查询仍在执行。性能正在遭受殴打。 – Nir 2012-03-22 18:19:15

+2

@ user583227 - 无论哪种方式,这都是答案。如果性能不好,您应该规范化表格并正确编制索引。 +1 – Lamak 2012-03-22 18:22:02

+0

不幸的是,它会运行缓慢。因为无法有效地使用concatination连接两个表。但它的工作。 – 2012-03-22 18:22:18

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: 对于Oracle:

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