“不在”查询失败

时间:2012-05-23 16:03:28

标签: mysql

通过openquery从MySQL数据库中提取一些信息:

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".

2 个答案:

答案 0 :(得分:3)

问题可能是以下一种或多种情况:

  1. foo不是表格
  2. bar不是foo table的列
  3. foobar不是一张桌子
  4. bar不是foobar table的列
  5. 来自foo表的
  6. 栏和来自foobar的栏具有不同(不兼容)的数据类型

  7. 可能来自MYSQL4.0的BUG(请查看HERE获取该信息)。

    使用NOT EXISTS代替NOT IN,如下所示:

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

答案 1 :(得分:1)

你的foobar子查询中是否有任何NULL?这会弄乱你的方法。如果是,请在SQL "select where not in subquery" returns no results

了解更多详情