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));

如果您在 table2 中有多个记录与 table1 中的记录匹配,则第一个查询将从 t1 返回多行,除非您distinct在其中放置子句。

于 2012-12-27T09:04:32.627 回答
1

为什么需要使用like 和子查询,无论您如何使用phone_no 列连接2 个表,它都会返回所有匹配的记录。

于 2012-12-27T07:38:14.573 回答
-1

使用 rownum=1 或 where 条件从内部子查询中仅返回一行,否则它将不适用于 table2 中的多个记录。

于 2012-12-27T08:36:17.453 回答