SQL如何让SELECT 查询结果额外增加自动递增序号

这个太有用了
举个栗子
表一t1

p1p1
220190
11220
12220
13220
13333

表二t2

p2p2
220190
11190
12190
13190
13190

将这个两个表拼接起来,看似简单,有一列是相同的,但是会出现笛卡尔乘积的问题

SELECT t1.p1,t1.c1,t2.p2,t2.c2 FROM tihuan t1
LEFT JOIN tihuan2 t2
ON t1.p1 = t2.p2
p1c1p2c2
220190220190
1122011190
1222012190
1322013333
1333313333
1322013190
1333313190

问题就出在13对应两个不同的值,不能作为唯一来匹配
那么额外增加自动递增序号,就很关键了

SELECT t1.c1,t2.c2 ,t1.p1,t2.p2 FROM (SELECT c1,p1, RANK() OVER (ORDER BY c1+p1) AS NO FROM tihuan ) t1
LEFT JOIN (SELECT c2,p2, RANK() OVER (ORDER BY c2+p2) AS NO FROM tihuan2 ) t2
ON t2.no = t1.no
c1c2p1p2
2201901111
2201901212
2201901313
3333331313
190190220220

也不是个好方法,万一顺序不唯一,也会出现上面的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值