2011-12-17 70 views
0

我運行了下面的腳本。 UserDetails.User#中沒有記錄,其中包含AccountDetails.User#。但是結果顯示,UserDetails中的每個用戶#與腳本中指定的每個AccountDetails.account#一起使用3次。 當SQL連接語句中沒有匹配時,它是否不返回任何內容?SQL連接語句返回意外的記錄

的數據類型和採樣值一點背景:

UserDetails.user# 
datatype = varchar(520) 
values in (1,0) 

AccountDetails.user# 
datatype = varchar(11) 
values in (22054414,28581057,26178648) 

我跑的腳本:

SELECT a.account# , a.userNum , u.userNum, u.Name 
FROM AccountDetails a 
JOIN UserDetails u ON a.userNum = u.userNum 
WHERE a.account# IN (87173000,11900008,79000082) 

樣品結果:

account#, a.userNum, u.userNum , u.Name 
87173000,  22054414,  1,  Joe Blow 
87173000,  28581057,  1,  John Smith 
11900008,  22054414,  1,  Joe Blow 
11900008,  28581057,  1,  John Smith 
79000082,  22054414,  1,  Joe Blow 
79000082,  28581057,  1,  John Smith 
+0

我通常使用內部聯接,而不是爲了可讀性而加入;但我不明白這對此有何幫助。 (除非引擎看到它作爲交叉連接(它不應該))添加內部只是爲了嘗試? – xQbert 2011-12-17 01:37:45

回答

0
 
SELECT a.account , a.user , u.Name 
FROM AccountDetails a 
JOIN UserDetails u ON (a.user = u.user) 
WHERE a.account IN (87173000,11900008,79000082) 
GROUP BY a.user 
+0

我不認爲這會起作用......您的選擇列表中的項目不是聚合,也不在組中。 – 2011-12-17 05:45:19