使用 Inner Join 多次返回相同的结果
Using Inner Join the same result is returned multiple times
我使用了以下查询:
OrderMaster
table:
OrderId
UserId - F.K
Users
table:
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
为什么多次返回相同的结果?请澄清一下。
由于您的连接条件是 <> 而不是 =,User 中的每条记录都与 Ordermaster 中具有不同 ID 的所有记录连接,多次给出相同的结果。
如果你想获得所有不在 Ordermaster 中的用户,那么你可以这样做:
SELECT ...
FROM Users u
WHERE NOT EXISTS (SELECT * FROM ordermaster WHERE u.Id = Id)
我使用了以下查询:
OrderMaster
table:
OrderId
UserId - F.K
Users
table:
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
为什么多次返回相同的结果?请澄清一下。
由于您的连接条件是 <> 而不是 =,User 中的每条记录都与 Ordermaster 中具有不同 ID 的所有记录连接,多次给出相同的结果。 如果你想获得所有不在 Ordermaster 中的用户,那么你可以这样做:
SELECT ...
FROM Users u
WHERE NOT EXISTS (SELECT * FROM ordermaster WHERE u.Id = Id)