-1

我有一个 SELECT 语句:

SELECT * 
FROM TABLE1 t1,TABLE2 t2 
WHERE t1.tid=t2.tid 
    AND t1.Col21 IN   ('103271','103280','107114','108083','116762','118462','119233','120562','125833','129706')

这不会返回任何数据,但我知道 Col21 中有所有上述值的记录。

我试过 trim(Col21) 但仍然没有数据。

任何帮助表示赞赏。

4

1 回答 1

1

首先,为了安心,请验证Col21此查询中是否有匹配的行。

SELECT * 
  FROM TABLE1 t1
 WHERE t1.Col21 IN ('103271','103280','107114','108083','116762','118462',
                    '119233','120562','125833','129706')

如果返回行,那么您提供的查询没有返回任何内容的原因是由于连接了TABLE2. 也许您打算进行外部联接?如果是这样,请尝试以下操作:

SELECT * 
  FROM TABLE1 t1,TABLE2 t2 
 WHERE t1.tid=t2.tid(+)
   AND t1.Col21 IN ('103271','103280','107114','108083','116762','118462',
                    '119233','120562','125833','129706')

t2.tid这将允许在没有TABLE2对应于 in 的行的地方出现空值TABLE1,保证TABLE1总是返回所有匹配的行。

于 2012-08-16T22:17:58.973 回答