使用内部连接相同的结果将多次返回
问题描述:
我用下面的查询:使用内部连接相同的结果将多次返回
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]
为什么多次相同的结果回来了?请澄清我。
答
由于您的加入条件是<>而不是=,因此用户中的每条记录都会与Ordermaster中具有不同ID的所有记录一起加入,并多次给出相同的结果。 如果你想获得其不在Ordermaster所有用户,那么你可以这样做:
SELECT ...
FROM Users u
WHERE NOT EXISTS (SELECT * FROM ordermaster WHERE u.Id = Id)
这个连接是没有意义的'用户为O在t1.UserId o.Id' –
也请告诉我们什么**数据类型**适用于那些列! –
为什么我想从用户表中获取数据不在Ordermaster表中。这是不正确的? – Duk