mssql数据排序的问题

hjl13960 2012-09-20 09:47:07
我有两个表T1(aid,aname),T2(bid,bname)
aid与bid关联,aid不会重复相同数据,bid可以重复相同数据.


我现在T1数据如下
(1,'a')
(3,'b')
(10,'c')
我现在T2数据如下
(1,'aa')
(1,'aa')
(3,'b')
(10,'c')
(10,'c')
---------------------------------------
我要求数据T1的aid数据从1顺序排序,也就是1,2,3.
那么T2对应的数据bid也要变成1,2,3,也就是T2表的数据如下
(1,'aa')
(1,'aa')
(2,'b')
(3,'c')
(3,'c')
...全文
177 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjl13960 2012-09-20
  • 打赏
  • 举报
回复
结果要变成
T1数据
id NAME
----------- ----------
1 a
2 b
3 c
-------------------------------
T2数据
id NAME
----------- ----------
1 aa
1 aa
2 b
3 c
3 c
唐诗三百首 2012-09-20
  • 打赏
  • 举报
回复

create table T1(aid int, aname varchar(5))
create table T2(bid int, bname varchar(5))

insert into T1
values(1,'a'),(3,'b'),(10,'c')

insert into T2
values(1,'aa'),(1,'aa'),(3,'b'),(10,'c'),(10,'c')


with t as
( select aid,aname,
row_number() over(order by aid) rn from t1
)
update b
set b.bid=a.rn
from T2 b
inner join t a on b.bid=a.aid;

with t as
( select aid,aname,
row_number() over(order by aid) rn from T1
)
update a
set a.aid=b.rn
from T1 a
inner join t b on a.aid=b.aid;

select * from T1
/*
aid aname
----------- -----
1 a
2 b
3 c

(3 row(s) affected)
*/

select * from T2
/*
bid bname
----------- -----
1 aa
1 aa
2 b
3 c
3 c

(5 row(s) affected)
*/
發糞塗牆 2012-09-20
  • 打赏
  • 举报
回复
看看是不是要这个:
CREATE TABLE t1 (id int ,NAME varchar(10))
INSERT INTO t1
SELECT 1,'a'
UNION ALL
SELECT 3,'b'
UNION ALL
SELECT 10,'c'

CREATE TABLE t2(id int ,NAME varchar(10))
INSERT INTO t2
SELECT 1,'aa'
UNION ALL
SELECT 1,'aa'
UNION ALL
SELECT 3,'b'
UNION ALL
SELECT 10,'c'
UNION ALL
SELECT 10,'c'


SELECT * FROM t1 a LEFT JOIN t2 b ON A.id=b.id
ORDER BY a.id
/*
id NAME id NAME
----------- ---------- ----------- ----------
1 a 1 aa
1 a 1 aa
3 b 3 b
10 c 10 c
10 c 10 c

(5 行受影响)
*/
hjl13960 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

不是很清楚你的要求,T2里面的(2,'b')是哪来的?然后你order by第一列应该就是你要的顺序啊?还有什么问题吗?
[/Quote]

其实不必要去管T2的bname的数据,只需要
T1的aid和T2的bid数据能重新关联上就可以了
Felixzhaowenzhong 2012-09-20
  • 打赏
  • 举报
回复
select t1.*,t2.* from t1,t2 where t1.aid=t2.bid
order by t1.aid,t2.bid
發糞塗牆 2012-09-20
  • 打赏
  • 举报
回复
不是很清楚你的要求,T2里面的(2,'b')是哪来的?然后你order by第一列应该就是你要的顺序啊?还有什么问题吗?

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧