我有两个表,我试图通过一个字段进行联接,并且它在两个查询中给出了不同的结果,这些结果应该会给出相同的结果。查询是:具有不同结果的SQL查询
SELECT * FROM tblCustomer tca
WHERE tca.PhoneNumber IN(
SELECT ts.SubscriptionNumber FROM sub.tblSubscription ts
WHERE ts.ServiceTypeID=4
AND ts.SourceID=-1
)
和
SELECT tca.*
FROM sub.tblSubscription ts
inner JOIN tblCustomer tca
ON ts.SubscriptionNumber = tca.PhoneNumber
WHERE ts.ServiceTypeID = 4
AND ts.SourceID = -1
这怎么可能?
有什么区别?关系是一对一还是另一个? –
你能告诉我们数据和表格定义吗? – SQLGuru
'IN'是一个半连接,由于'1..n'关系不会带来重复。它比内部加入更有效,然后用'DISTINCT'删除重复项。 –