2013-02-14 27 views
0

下面的代碼:MySQL的奇聯袂發行

select DB.T1.ID, 
DB.T1.B, 
DB.T1.C, 
DB.T2.ID, 
DB.T2.B, 
DB.T2.R, 
DB.T3.ID, 
DB.T3.Q 
DB.T1.DUP, 
DB.T2.DUP, 
DB.T3.DUP 
from DB.T1, DB.T2, DB.T3 
where DB.T1.id = DB.T2.ID 
and DB.T1.id = DB.T3.ID 
and DB.T2.id = DB.T3.id 
and DB.T1.DUP = 'not_duplicate' 
and DB.T2.DUP = 'not_duplicate' 
and DB.T3.DUP = 'not_duplicate' 
; 

輸出返回0行,但是。所以,我將每個表中「DUP」列的值從duplicate/not_duplicate改爲0/1。我試過這段代碼,它的工作原理如下:

select DB.T1.ID, 
DB.T1.B, 
DB.T1.C, 
DB.T2.ID, 
DB.T2.B, 
DB.T2.R, 
DB.T3.ID, 
DB.T3.Q 
DB.T1.DUP, 
DB.T2.DUP, 
DB.T3.DUP 
from DB.T1, DB.T2, DB.T3 
where DB.T1.id = DB.T2.ID 
and DB.T1.id = DB.T3.ID 
and DB.T2.id = DB.T3.id 
and DB.T1.DUP = 1 
and DB.T2.DUP = 1 
and DB.T3.DUP = 1 
; 

第二個代碼很完美,第一個代碼返回0行。有誰知道爲什麼會發生這種情況?值「not_duplicate」和「duplicate」與我從數據庫中導入的csv完全相同。我無法解釋爲什麼會出現這種情況,我真的很好奇。

非常感謝!

+1

該列的數據類型是什麼? – Taryn 2013-02-14 22:24:16

+0

它是VARCHAR(255)。 「DUP」列是每個表格的每一行中的最後一列,如果這會產生任何區別... – user7186 2013-02-14 22:26:48

+0

varchar但您在其中存儲了什麼? 1還是not_duplicate? – 2013-02-14 22:28:01

回答

0

因爲DUP列他們沒有這個字段中的這個not_duplicate。他們有1 那麼它不符合你的查詢。

查詢返回存儲在列DUP中的值。

+0

我不太明白的是爲什麼當我將單元格的值更改爲「1」時它註冊爲「1」,但它似乎沒有註冊「not_duplicate」。 – user7186 2013-02-14 22:35:56

+0

我不知道MySQL是否有一種特殊的方式來處理連續最後一列的值,在末尾添加一個隨機字節,或者允許識別「1」而不是「not_duplicate」。 。 – user7186 2013-02-14 22:40:22

+0

如果使用數字,請嘗試更改爲INT而不是varchar – 2013-02-14 22:42:04