0

以下代码:

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”列的值从重复/不重复更改为 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 完全相同的字符串。我无法解释为什么会这样,我真的很好奇。

非常感谢!

4

1 回答 1

0

因为他们在 DUP 列中没有这个not_duplicate字段。他们有 1 然后它与您的查询不匹配。

查询返回存储在 DUP 列中的值。

于 2013-02-14T22:26:39.407 回答