4

openqueryを介してMySQLデータベースからいくつかの情報を取得します。

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

ここで、サブクエリをハードワイヤードの数値に置き換えると、正常に機能しますが、除外する必要のある数値は1000近くあります。私はこれを理解することができませんでした。どちらのクエリもそれ自体で正常に実行されます。エラーは常に「foobarからbarを選択」に構文エラーがあることを示しています。

ありがとう

編集:

ここにエラーがあります:

[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つ以上の状況である可能性があります。

  1. fooはテーブルではありません
  2. バーはfooテーブルの列ではありません
  3. foob​​arはテーブルではありません
  4. barはfoobarテーブルの列ではありません
  5. fooテーブルのbarとfoobarのbarのデータ型は異なります(互換性がありません)。

MYSQL4.0のバグである可能性があります(その情報については、こちらを確認しください)。

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

foob​​arサブクエリにNULLはありますか?これはあなたのアプローチを台無しにするでしょう。その場合、 SQLの「サブクエリにない場所を選択」の詳細は結果を返しません

于 2012-05-23T16:11:48.980 に答える