2016-11-03 143 views
0

因此,我有两个表A和B,两个表都有一个列地址。表A有id1列,表B有id2列。如果id1和id2列中的值相同,我想获取地址列(它可以是表B)。我怎么能在SQL命令中做到这一点?值得一提的是,如果这些列是相同的,地址也会相同或相似,所以地址可以来自任一表。我很新的SQL,你的帮助将非常感激。在此先感谢如果表A的列A等于表B的列B,则从两个表(表A和表B)获得输出

+0

更新您的问题显示表的模式,一个适当的数据样本和预期的结果... – scaisEdge

回答

0

你应该试试这个:

Select address 
from tablea as a, table b as b 
where b.id =a.id 
+0

请停止在where子句中使用古老的,过时的和脆弱的隐式连接,并开始使用明确的'JOIN'运算符。 –

0

我假设有一个机会,在表1中的地址丢失,否则它会只是选择该领域的问题。我加了一个case语句来处理,以防万一(港灯),但如果没有你可以只更换a.address是整个位

Select a.id1, 
    case when a.address is not null 
     then a.address 
     else b.address end as new_address. 
from Table1 A, Table2 B 
where a.id1 = b.id2 

此外,如果你已经有了一个内部组合与外部连接发生(或只是很多连接),那么你会想添加更多的显式连接标准。

+0

请停止在where子句中使用古老的,过时的和脆弱的隐式连接,并开始使用显式的'JOIN'运算符。 –

+0

如果在正确的地方使用隐式连接,则没有什么脆弱的。加入运算符只有在进行外连接时才需要。 –

+0

隐式连接**是脆弱的,因为它很容易结束交叉连接,因为缺少连接条件不会导致错误消息。用不明确的JOIN操作符写一个交叉连接是不可能的。看看这个:http://hastebin.com/tayimobapo.sql,告诉我你需要多久才能知道是否缺少连接条件。 –

相关问题