我有两个表-TABLE_A和TABLE_B。
TABLE_A
AREA_ID LOC_ID OTHER
------ -------- -----
111 1 AA
222 2 BB
333 3 CC
TABLE_B
-------
LOC_ID LOC_NAME
------- ----------
1 USA
2 ITALY
3 SPAIN
基于上述内容,我想查询TABLE_A中的所有记录,并使用LOC_ID在TABLE_B上联接,但要从TABLE_B返回USA以获得TABLE_A中的所有AREA_ID。
我追求的结果是:
结果:
AREA_ID NAME
------ --------
111 USA
222 USA
333 USA
也就是说,我想针对LOC_ID = 1(美国)在TABLE_B中重复LOC_NAME,并将此名称分配给TABLE_A中的所有AREA_ID记录。
答案 0 :(得分:3)
这似乎可以满足您的要求:
select a.area_id, 'USA' as loc_name
from table_A a;
我不知道为什么需要加入table_B
。
如果您确实想要带有“ 1”的值,请使用:
select a.area_id, b.loc_name
from table_A a join
table_B b
on b.loc_id = 1;
您可能需要left join
。 。 。但随后您将获得一个NULL
值。
答案 1 :(得分:0)
使用cross join
作为
select a.area_id, b.loc_name as name
from table_a a
cross join table_b b
where b.loc_id = 1
或inner join
select a.area_id, b.loc_name as name
from table_a a
join table_b b
on b.loc_id = 1
答案 2 :(得分:0)
像这样吗?
如果您在第15行中更改条件,则会从LOC_NAME
获得另一个table_B
。
SQL> with table_a (area_id, loc_id, other) as
2 (select 111, 1, 'AA' from dual union all
3 select 222, 2, 'BB' from dual union all
4 select 333, 3, 'CC' from dual
5 ),
6 table_b (loc_id, loc_name) as
7 (select 1, 'USA' from dual union all
8 select 2, 'ITALY' from dual union all
9 select 3, 'SPAIN' from dual
10 )
11 select a.area_id, x.loc_name
12 from table_a a join
13 (select b.loc_name
14 from table_b b
15 where b.loc_id = 1 --> that's what you said
16 ) x
17 on 1 = 1;
AREA_ID LOC_N
---------- -----
111 USA
222 USA
333 USA
SQL>