2012-05-23 47 views
4

從MySQL數據庫拉動一些信息通過OPENQUERY:「不是在」查詢失敗

select * 
from foo 
where bar not in (select bar from foobar) 

現在,如果我硬連線的數字替代子查詢,它工作正常,但我有接近1000個號碼,我需要排除。我一直沒有弄清楚這一點;兩個查詢都可以自行運行。錯誤總是告訴我,我在「從foobar的選擇吧)」的語法錯誤

感謝

編輯:

這裏是錯誤:

[MySQL][ODBC 3.51 Driver][mysqld-4.0.20-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select bar from foobar)' at line 3". 
+3

什麼是確切的錯誤? –

+4

您可以顯示您正在使用的實際查詢,而不是用'foo'和'foobar'代替的實際查詢 – Jrod

+1

該查詢設置沒有任何問題,除非您的非foo/barred字段是保留字。 –

回答

3

的問題可以是一個,或更多以下情況:

  1. foo不是表
  2. 條不從FOO表中的列
  3. foobar的不是表
  4. 欄不從foobar的表中的列
  5. 從FOO表欄,然後從foobar的酒吧具有不同的(不兼容)的數據類型

這是可能從MYSQL4.0(檢查HERE該信息)的錯誤。

使用NOT EXISTS,而不是NOT IN這樣的:

select * 
from foo 
where bar NOT EXISTS (select bar from foobar WHERE foobar.bar = foo.bar) 
+0

嗯....它可能是數字5.我沒有最大的訪問權限,所以我不知道如何設置數據類型明智的列。我會深入研究這一點。 – Limey

+0

如果它在你輸入數字時起作用,那麼foo表中的bar必須是一個數字數據類型,可能它不在foobar表中。 –

+0

我檢查了兩列是通過嘗試數學,他們都允許propeer數學(包括整數和浮點數)在他們上完成 – Limey