1

このクエリを完了するために私を助けてください

select *
from table1 a
join table2_n n 
on a.PHONE_NO like '%'|| (select substr(mobile_no,2,9) as mobile_no from table2)

テーブル 2 レコードはテーブル 1 に存在します。だから私はこのクエリからそれらすべてを取得する必要があります

4

3 に答える 3

3

サブクエリは必要ありません。データを直接結合できます。

select a.*
from   table1 a
join   table2 n 
on     a.PHONE_NO like '%'|| substr(mobile_no,2,9);

existsまたは、サブクエリを使用してこれを記述することもできます。

select *
from   table1 a
where  exists (select null
               from   table2 n 
               where  a.PHONE_NO like '%'|| substr(mobile_no,2,9));

table1 のレコードと一致する table2 に複数のレコードがあるdistinct場合、そこに句を入れない限り、最初のクエリは t1 から複数の行を返します。

于 2012-12-27T09:04:32.627 に答える
1

likeとsubqueryを使用する必要があるのはなぜですか。phone_no列を使用して2つのテーブルを結合すると、一致するすべてのレコードが返されます。

于 2012-12-27T07:38:14.573 に答える
-1

rownum=1 または where 条件を使用して、内側のサブクエリから 1 行のみを返します。そうしないと、table2 の複数のレコードに対して機能しません。

于 2012-12-27T08:36:17.453 に答える