2017-01-26 42 views
1

我有一個SQL問題,我真的不明白我做錯了什麼。我有兩個表,並希望用Table 1中的一個條目替換Table1。這工作正常,但它的時間。爲了澄清,Table1有20個條目和Table2,但我的輸出有400個條目。所以每個條目20次。SQL - 左加入錄入時間

因此,這裏是我想要做的事:

Table1 
|Name  |FullName |Size  | 
+---------+----------+----------+ 
|File1 |C:\File1 |8923749343| 
|File2 |C:\File2 |3475873758| 
+---------+----------+----------+ 

通常有二十項,但現在2應該是足夠的。

Table2 
|FullName |CopyName |Name  | 
+---------+----------+----------+ 
|www\File1|C:\File1 |File1  | 
|www\File2|C:\File2 |File2  | 
+---------+----------+----------+ 

我現在的目標是從表2 代替表1越來越表1全名。 我的嘗試:

SELECT t1.Name, t2.FullName, t1.Size 
FROM Table1 t1, Table2 t2 
LEFT JOIN Table1 ON Table1.FullName=Table2.CopyName; 

這是我得到:

Table1 
|Name  |FullName |Size  | 
+---------+----------+----------+ 
|File1 |www\File1 |8923749343|  
|File1 |www\File1 |8923749343| 
|File2 |www\File2 |3475873758| 
|File2 |www\File2 |3475873758| 
+---------+----------+----------+ 

這就是我想要的:

Table1 
|Name  |FullName |Size  | 
+---------+----------+----------+ 
|File1 |www\File1 |8923749343| 
|File2 |www\File2 |3475873758| 
+---------+----------+----------+ 

因此從技術上講我有正確的,但由於某種原因,定時。在這裏,我得到了每兩次,在我的原始嘗試每20次。我究竟做錯了什麼?

感謝您的任何建議!

回答

2

從不FROM條款中使用逗號。 始終使用使用正確的,明確的JOIN語法。

試試這個:

SELECT t1.Name, t2.FullName, t1.Size 
FROM Table2 t2 LEFT JOIN 
    Table1 t1 
    ON t1.FullName = t2.CopyName; 

您的查詢引用了兩個Table1。因此,你得到了一個笛卡爾產品和你想要的JOIN

+0

哦,對了忘了這一點*捂臉*,感謝您的幫助刪除了這一行! – Tobe

2

您應該從查詢」,表2 T2"

SELECT t1.Name, t2.FullName, t1.Size 
FROM Table1 t1 
LEFT JOIN Table2 t2 ON t2.CopyName=t1.FullName;