需要一些帮助加入

时间:2011-04-29 01:27:43

标签: tsql join

所以我有一个从数据库中选择记录的过程。 proc有一个包含IP地址的varchar参数。

proc正在从具有messageId列(主键)的表中选择记录。

我有另一个表将IP链接到消息。此表格的列为ip,列为messageId

从第一个表中选择记录时,我还想从第二个表中选择所有传入proc的IP地址与第二个表中IP地址匹配的每个记录中messageId的每个记录的列我带回来了。

谢谢你们。

3 个答案:

答案 0 :(得分:1)

您需要使用左连接:

 select *
 from table1  -- table with messageid
 left join table2   -- table with ip
    on table1.messageid = table2.messageid
  where table2.ip = @ip

答案 1 :(得分:0)

假设您的设置与此类似:

*Table1*

MessageId | ColA | ColB

*Table2*

MessageId | Ip | ColX | ColY

你的sql会是这样的:

 Select t1.MessageId, t1.ColA, t1.ColB, t2.Ip, t2.ColX, t2.Coly
 From Table2 t2
 Lef Outer Join Table1 t1 on t1.MessageId=t2.MessageId
 Where t2.Ip = @varcharIP

答案 2 :(得分:0)

以下内容如何:

SELECT m.*, i.ip FROM Messages m
LEFT OUTER JOIN IPs i ON m.messageID = i.messageID
WHERE m.messageID = 'YOURMESSAGEID'

为各自的表格切换消息和IP