欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

解决 船与运输问题

程序员文章站 2024-04-03 20:24:10
...

无详细内容 排座位 drop table v1;create table v1( name varchar(10), --人名, addres varchar(10) --去哪里,); insert into v1 values('my1','上海'); insert into v1 values('my2','北京'); insert into v1 values('my3','上海'); insert into v1 values('

排座位
drop table v1;
create table v1( 
name varchar(10),  --人名, 
addres varchar(10)  --去哪里,
); 
insert into v1 values('my1','上海'); 
insert into v1 values('my2','北京'); 
insert into v1 values('my3','上海'); 
insert into v1 values('my4','江西'); 
insert into v1 values('my5','上海'); 
select * from v1;
drop table v2;
create table v2( 
shipname varchar(10),  --船名, 
addres varchar(10)  --去哪里
); 
insert into v2 values('ship1','上海'); 
insert into v2 values('ship2','北京'); 
insert into v2 values('ship3','上海'); 
insert into v2 values('ship4','四川'); 
select * from v2;

select v1.name,v1.addres ,ROW_NUMBER() OVER(PARTITION BY v1.addres ORDER BY v1.addres DESC) AS 'RowNumber'
 from v1 order by v1.name;
 select v2.addres,v2.shipname ,ROW_NUMBER() OVER(PARTITION BY v2.addres ORDER BY v2.addres DESC) AS 'RowNumber'
 from v2  order by v2.addres;
 
 select x.name ,x.addres ,y.shipname  from (select v1.name,v1.addres ,ROW_NUMBER() OVER(PARTITION BY v1.addres ORDER BY v1.addres DESC) AS 'RowNumber'
 from v1) x left join (select v2.addres,v2.shipname ,ROW_NUMBER() OVER(PARTITION BY v2.addres ORDER BY v2.addres DESC) AS 'RowNumber'
 from v2) y on x.addres =y.addres and x.RowNumber=y.RowNumber
解决 船与运输问题