2015-06-20 98 views
0

我用下面的查询:使用内部连接相同的结果将多次返回

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  [email protected] 
2 yyyy 422557879  [email protected] 
1 xxxx 252548878  [email protected] 
2 yyyy 422557879  [email protected] 

为什么多次相同的结果回来了?请澄清我。

+2

这个连接是没有意义的'用户为O在t1.UserId <> o.Id' –

+0

也请告诉我们什么**数据类型**适用于那些列! –

+0

为什么我想从用户表中获取数据不在Ordermaster表中。这是不正确的? – Duk

回答

1

由于您的加入条件是<>而不是=,因此用户中的每条记录都会与Ordermaster中具有不同ID的所有记录一起加入,并多次给出相同的结果。 如果你想获得其不在Ordermaster所有用户,那么你可以这样做:

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