急求一sql语句!在线等!

LIHY70 2006-07-05 01:56:29
A表:
idA task_id tag_id
1 69 28
2 69 28
3 70 23


B表:
idB task_id tag_id
498 69 28
497 69 28
496 70 23

RESULT:
idA idB
497 1
498 2
496 3
两个表关联字段为task_id 、tag_id
...全文
257 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
LIHY70 2006-07-06
  • 打赏
  • 举报
回复
感谢大家的回复!因为其中表A是后建的,而且这两个表是存在关联的.因为没想到更好的办法,所以只能这样做了,如果大家有更好的设计,可以回复我,谢谢
LouisXIV 2006-07-05
  • 打赏
  • 举报
回复
LIHY70(洛洛)
-------------------------

请看清楚没让你直接用表上的ID做关联

而是让你写入临时表获得一列新的自增ID来关联

不管怎么说,你的表的设计或者说业务逻辑有不小的问题
fcuandy 2006-07-05
  • 打赏
  • 举报
回复
是吗,不觉得。
只是认为逻辑有问题的语句不想写。
昵称被占用了 2006-07-05
  • 打赏
  • 举报
回复
还有,如果ab表不对应,比如a表数据不变
B表:
idB task_id tag_id
497 69 28
496 70 23

你需要怎样的结果?
昵称被占用了 2006-07-05
  • 打赏
  • 举报
回复
问题主要体现在:
1、你这个简单查询需要2楼这样的5星级人物才能写出
2、写出的语句效率低,用了3各子查询
3、你的结果有异议,就你的例子说,如果查询的结果是
idA idB
498 1
497 2
496 3
对不对?

lizhipengmail 2006-07-05
  • 打赏
  • 举报
回复
这样设计表有问题,建议加张中间表
LIHY70 2006-07-05
  • 打赏
  • 举报
回复
测试过了,二楼完全正确

不知道我这样的设计会给以后留下什么问题呢
请Haiwer(海阔天空) 说下好么
LouisXIV(夜游神)的方法不行的,因为A表是后建的表,所以我即使加完自增id,这两个表仍然id不能关联

解答完这个问题立即揭贴
LouisXIV 2006-07-05
  • 打赏
  • 举报
回复
--如果是先后次序,索性分别写进2个带自增列的临时表,用自增列来结合好了
--如下
select id=identity(int,1,1),* into #1 from A
select id=identity(int,1,1),* into #2 from B
select idA,idB
from #1 A inner join #2 B
on A.id=B.id
昵称被占用了 2006-07-05
  • 打赏
  • 举报
回复
你的要求2楼给你实现了

不过,这样设计问题不小
玩不够 2006-07-05
  • 打赏
  • 举报
回复
支持 LouisXIV(夜游神) 的观点,数据有问题。
LIHY70 2006-07-05
  • 打赏
  • 举报
回复
其实是记录是同时插入A表 和B表(1、497;2,498),因为id 没办法对应,所以我只能从的插入的先后顺序进行关联,不知道这样做有问题么
LouisXIV 2006-07-05
  • 打赏
  • 举报
回复
A表:
idA task_id tag_id
1 69 28
2 69 28



B表:
idB task_id tag_id
498 69 28
497 69 28


这个显然是多对多的关系,数据有没有搞错?
LIHY70 2006-07-05
  • 打赏
  • 举报
回复
是一对一
LouisXIV 2006-07-05
  • 打赏
  • 举报
回复
多对多,无法取得lz要的数据,请自行检讨表的设计
子陌红尘 2006-07-05
  • 打赏
  • 举报
回复
select
m.idA,n.idB
from
(select t.*,(select count(*) from A表 where task_id=t.task_id and tag_id=t.tag_id and idA<=t.idA) as nid from A表 t) m,
(select t.*,(select count(*) from B表 where task_id=t.task_id and tag_id=t.tag_id and idB<=t.idB) as nid from B表 t) n
where
m.task_id=n.task_id and m.tag_id=n.tag_id and m.nid=n.nid
昵称被占用了 2006-07-05
  • 打赏
  • 举报
回复
多对多?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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