2012-08-16 38 views
-1

我有一個SELECT語句:哪些錯誤與此VARCHAR2列中的數據甲骨文

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上述值的記錄。

我試圖微調(Col21),但仍沒有數據。

任何幫助表示讚賞。

+4

是什麼讓你認爲有,在這也滿足連接標準的表格相匹配的值的數據?這有可能是你已經打了一些模糊的情況或錯誤,但它是相當多的可能有一些事是不是您所期望的數據。如果您能向我們展示爲什麼您認爲查詢應該返回行,那麼我們很可能會發現數據的內容不符合您的期望。 – 2012-08-16 19:09:02

+3

您是否確定t2.tid中的數據與您的條件相符? – 2012-08-16 19:09:08

+0

數據問題是肯定的,而不是用't1.col IN'但我認爲事情不帶't1.tid = t2.tid'匹配。 – Annjawn 2012-08-16 21:56:54

回答

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在相應於TABLE1沒有行,保證在TABLE1所有匹配的行總是返回。