2015-06-20 152 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)