数据库疑难杂症!!!!

qustgjk 2010-05-27 03:32:04
假如我现在有表a: id num
1 1
2 2
3 3
4 2
5 4
6 2

表b: id num
1 1
2 2
3 3
4 4
5 2

我现在想要一个a表和b表id的结果集, 要求是a.num = b.num, 但是a和b不能十字交叉,a,b中的任何一条记录只能匹配一次,如果有可以匹配的,这条记录就不能和其他记录匹配了,如果一条记录有多条满足a.num = b.num, 取第一个匹配的记录。 比如上面我想要的结果就是:

a.id a.num b.id b.num
1 1 1 1
2 2 2 2
3 3 3 3
4 2 5 2
5 4 4 4

a中的id(6), num(2)记录虽然有匹配的,但是b中的都和a中的匹配过了,不能和它匹配了,所以结果集中不包括他。

高手指点,如何获取我想要的记录集啊?
...全文
237 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wqkjj 2010-05-28
  • 打赏
  • 举报
回复
有点象琢磨"茴香豆的第四种写法"的感觉;
DB不支持存储过程或是内建函数?尤其是内建函数,可以满足在 SQL中输出。
感觉让DB承担业务分析逻辑,不是很好的选择。
qustgjk 2010-05-28
  • 打赏
  • 举报
回复
是在想不出来,算了,我刚用程序实现了,谢谢大家了
BearKin 2010-05-28
  • 打赏
  • 举报
回复
先查 再压缩
qustgjk 2010-05-28
  • 打赏
  • 举报
回复
今天看看能不能接到高手的招!
zhouliubin 2010-05-27
  • 打赏
  • 举报
回复
上面的select中nid要改为bid,写了自己看了一遍,居然还是有拼写错
呵呵
zhouliubin 2010-05-27
  • 打赏
  • 举报
回复
这个应该可以,但未测试
select c.aid,c.anum,c.nid,c.bnum from
(select a.id aid,b.id bid,a.num anum,b.num bnum from a,b where a.num=b.num) c,
(select a.id aid,b.id bid,a.num anum,b.num bnum from a,b where a.num=b.num) d
where c.aid=d.aid and c.bid=d.bid and c.anum!=d.anum
jwl_xyc 2010-05-27
  • 打赏
  • 举报
回复
建议楼主用程序差分吧,因为SQL是一次处理,他不可能去分析数据,你这里面涉及到的是b表一旦这条数据被联合了,就不再参与接下来的联合,这实在有点困难。用程序就容易多了。
zyq070 2010-05-27
  • 打赏
  • 举报
回复
不是很明白阿 a.num=2 b.num=2 好像有三条匹配纪录 你怎么就删除 了一条?
qustgjk 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fairy_dy 的回复:]
按id升序排序并去重,再加a.id=b.id就可以
[/Quote]
要是这么简单我还用发帖。。。
pl_0803 2010-05-27
  • 打赏
  • 举报
回复
好像比较复杂
Fairy_dy 2010-05-27
  • 打赏
  • 举报
回复
按id升序排序并去重,再加a.id=b.id就可以
qustgjk 2010-05-27
  • 打赏
  • 举报
回复
又沉下去了。。。
qustgjk 2010-05-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cuiqunhao 的回复:]
很复杂
[/Quote]
me too think
cuiqunhao 2010-05-27
  • 打赏
  • 举报
回复
很复杂
victor_woo 2010-05-27
  • 打赏
  • 举报
回复
select distinct (a.id,b.id),a.num,b.num from a,b where a.id=b.id

瞎写的,肯定不对
mochibing 2010-05-27
  • 打赏
  • 举报
回复
sql语句看来是很难实现了,用存储过程或者代码的方式吧
fobcclkm 2010-05-27
  • 打赏
  • 举报
回复
看了 但没看明白
qustgjk 2010-05-27
  • 打赏
  • 举报
回复
别沉下去啊!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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