使用Inner Join会多次返回相同的结果

时间:2015-06-20 09:55:27

标签: sql-server-2008 inner-join

我使用了以下查询:

OrderMaster表:

OrderId
UserId - F.K

Users表:

Id - P.K
Name
Email
Mobilenumber

查询:

SELECT 
    CAST(o.Id as varchar(50)) as ID, 
    CAST(o.Name as varchar(50)) as Name,
    CAST(o.ContactNumber as varchar(50)) as Mobilenumber, 
    o.Email 
FROM 
    ordermaster as t1 
INNER JOIN
    Users as o ON t1.UserId<> o.Id

结果如下:

Id  Name   Mobilenumber  Email
-------------------------------------------
1   xxxx   252548878     dfj@dkjf.com
2   yyyy   422557879     dsfsdf@kdjf.com
1   xxxx   252548878     dfj@dkjf.com
2   yyyy   422557879     dsfsdf@kdjf.com

为什么多次返回相同的结果?请澄清一下。

1 个答案:

答案 0 :(得分:1)

由于您的加入条件是&lt;&gt;而不是=,用户中的每条记录与Ordermaster中具有不同ID的所有记录一起加入,多次给出相同的结果。 如果您想获得不在Ordermaster中的所有用户,那么您可以这样做:

SELECT ...
FROM Users u
WHERE NOT EXISTS (SELECT * FROM ordermaster WHERE u.Id = Id)