请协助我完成此查询
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 中。所以我需要从这个查询中得到它们
您不需要有子查询,您可以直接加入数据:
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
在其中放置子句。
为什么需要使用like 和子查询,无论您如何使用phone_no 列连接2 个表,它都会返回所有匹配的记录。
使用 rownum=1 或 where 条件从内部子查询中仅返回一行,否则它将不适用于 table2 中的多个记录。