使用SQL,当我合并两个表(Master-table和Table-2)时,如何从Master表中获取数据的实际行号。请参见下图:
表-1(主表)
Name Age ---------- ------ 1 Ruth | 45 2 Jennifer | 52 3 Isabel | 29 4 Jo | 59 5 Dan | 35 6 Lem | 26
表2
Name Color ---------- ------ 1 Ruth | Blue 2 Jennifer | Blue 3 Isabel | Red 4 Jo | Blue 5 Dan | Red 6 Lem | Blue
我想得到的结果:(1)获取颜色为蓝色的记录,(2)新列(表-1中的Row_Number):
Name Age Color Row_Number ---------- ------ -------- ------------ 1 Ruth | 45 | Blue | 1 2 Jennifer | 52 | Blue | 2 3 Jo | 59 | Blue | 4 4 Lem | 26 | Blue | 6
答案 0 :(得分:0)
这可以解决您的问题:
with all_users as
(
select *, row_number over(order by name/*order by whatever you want*/) as seq
from table1
) select *, all_users.seq
from table2
join all_users using(name);
您也可以使用子查询,但在使用Oracle时我更喜欢with
。
答案 1 :(得分:0)
使用row_nummber()
,但您需要指定排序条件
select t.name,t.age,tbl.color,tbl.rn as rownumber
from table2 t
join (select name,color,row_nummber() over (order by name) as rn from table1) tbl
on t.name=tbl.name
编辑:如果您没有任何排序条件(如评论中所述),那么您只需使用rownum
而无需指定排序条件:
select t.name,t.age,tbl.color,tbl.rn as rownumber
from table2 t
join (select name,color,rownum as rn from table1) tbl
on t.name=tbl.name