一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合.

1.首先我们做题目之前分析,一共有多少中可能的情况。

2.(aa,ab,ac,ad),(ba,bb,bc,bd),(ca,cb,cc,cd),(da,db,dc,dd),四个队伍进行比赛,这是所有的情况,但是aa,bb,cc,dd这四种情况是自己和自己比赛,那肯定是不行的,为了方便理解我画个图来帮助理解

3.画图理解:

4.如上图所示,最终正确答案就是这个了,一共有6种情况,这么简单相信大家都会,那么关键就是我们怎么用SQL语句来达到上图的这种效果呢?仔细看图分析,我们发现左侧的字母总是小于右侧字母的顺序的,队伍team都一样,那么我们SQL语句可以写成这样:

5.SQL语句:

Select a.Name,b.Name From Team as a,Team as b Where a.Name<b.Name 

经过上述SQL语句我们可以查询到结果:

6.看着好像不是那么回事,强迫症患者,继续优化SQL语句:

Select a.Name,b.Name From Team as a,Team as b Where a.Name<b.Name And order by a.Name,b.Name

7.这回就舒服多了,再把这个图和3图对比一下,一模一样,大功告成

8.总结:有时候拿到题目首先应该先仔细思考,不要盲目下手,思考清楚后再来实践,往往事半功倍!

学习如逆水行舟,不进则退。加油!加油!加油!

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值