1

where 句にネストされた select を持つ SQL クエリがあります。そのサブクエリを単独で実行すると、行が返されます。ただし、ネストされたクエリとして実行すると、何も返されません。ネストされたクエリを、返されることがわかっている実際のデータに置き換えると、クエリは成功します。

select * from customers where id in (select people.id from people)

私が理解していないのは、実行すると

select people.id from people

データを取得します。たとえば、ABC としましょう。私が走れば

select * from customers where id in ('ABC')

データを取得します。私たちはOracleデータベースを使用していますが、それが関連しているかどうかはわかりません.

4

2 に答える 2

1

people テーブルでこれを実行します (もちろん dev 環境でテストします):

update people set ID = regexp_replace(ID, '[[:cntrl:]]','');
commit;

次に、クエリを再試行します (代わりに結合を使用してみてください)。

これは 11g で動作するはずですが、以前のバージョンについては不明です。

于 2012-04-12T13:16:57.400 に答える
1

そのため、ID が末尾にスペースがある文字列である可能性があります。代わりにこれを試してください:

select a.id, a.other_relevant_fields from customers a, people b 
where TRIM(a.id)=TRIM(b.id)
于 2012-04-12T12:23:13.060 に答える