4

通过 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".
4

2 回答 2

3

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

  1. foo 不是表
  2. bar 不是 foo 表中的列
  3. foob​​ar 不是表
  4. bar 不是 foobar 表中的列
  5. foo 表中的 bar 和 foobar 中的 bar 具有不同(不兼容)的数据类型

可能是来自 MYSQL4.0 的 BUG(查看此处获取该信息)。

使用NOT EXISTS而不是NOT IN这样:

select *
from foo
where bar NOT EXISTS (select bar from foobar WHERE foobar.bar = foo.bar)
于 2012-05-23T16:11:12.980 回答
1

您的 foobar 子查询中有任何 NULL 吗?这会弄乱你的方法。如果是这样,SQL "select where not in subquery" 中的更多详细信息不返回任何结果

于 2012-05-23T16:11:48.980 回答