A 类别表
AId Aname
1 first
2 second
3 thirdB 所有的记录
BId Bname AId
01 value1 1
02 value2 1
03 value3 1
04 value4 2
05 value5 2
06 value6 2
07 value7 3
08 value8 3
09 value9 3
010 value10 3
011 value11 2
012 value12 2
013 value13 3
014 value14 3
015 value15 1需要得出的结果
Result
BId Bname AId
015 value15 1
03 value3 1
012 value12 2
011 value11 2
014 value14 3
013 value13 3得到这个结果用下面这条语句,已经有人帮忙写好了,可以实现,请帮我解释一下这条语句,其中 select top 2 bid from B where aid=a.aid order by 1 desc 是怎么得到6条记录的,为什么筛选条件为 aid=a.aid 就能把所有不同类别的最前面2个值纪录筛选出来,这一种有没有方法,有没有什么名字,是属于表的自身连接查询吗?select * from B as a
where bid in (select top 2 bid from B where aid=a.aid order by 1 desc )
order by 3
AId Aname
1 first
2 second
3 thirdB 所有的记录
BId Bname AId
01 value1 1
02 value2 1
03 value3 1
04 value4 2
05 value5 2
06 value6 2
07 value7 3
08 value8 3
09 value9 3
010 value10 3
011 value11 2
012 value12 2
013 value13 3
014 value14 3
015 value15 1需要得出的结果
Result
BId Bname AId
015 value15 1
03 value3 1
012 value12 2
011 value11 2
014 value14 3
013 value13 3得到这个结果用下面这条语句,已经有人帮忙写好了,可以实现,请帮我解释一下这条语句,其中 select top 2 bid from B where aid=a.aid order by 1 desc 是怎么得到6条记录的,为什么筛选条件为 aid=a.aid 就能把所有不同类别的最前面2个值纪录筛选出来,这一种有没有方法,有没有什么名字,是属于表的自身连接查询吗?select * from B as a
where bid in (select top 2 bid from B where aid=a.aid order by 1 desc )
order by 3
解决方案 »
- =========事务问题,看了一些文章,还是有点不明白,请会家指导,谢谢!
- 关于SQL语句排序的问题。
- SQL SERVER 2000中如何实现行级的排他锁?
- SQL数据库名"YY"但程序找出为 "Local"如何修正或有其他写法将SQL数据库名变成"YY"程序如下
- 数据库的扩展属性有用吗?
- 要想到如下的效果,sql语句该怎么来写?谢谢,非常急
- 能否让datatime类型字段中只保存月日 谢谢各位侠客了!!!
- SQL 问题,急急急!!!
- 求助:如何用substring搜索datagrid各行字段中的关键字,并把它们放在一张表中?
- 怎么样让字段设成自动编号的类型??注意:不是1,2,3,这样的自增类型哦!
- sql语句
- sum 可以得到多个列的统计结果么?
只要弄清楚相关子查询的概念与要领,这个题不是很难的!--相关子查询与普通子查询的区别在于:相关子查询引用了外部查询中的列!这种用外部查询来限制子查询的方法使
SQL查询变得更加强大和灵活。因为相关子查询能够引用外部查询,所以它们尤其适合编写复杂的where条件!
相关子查询不能自己单独运行,其执行顺序如下:
1.首先执行一次外部查询
2.对于外部查询中的每一行分别执行一次子查询,而且每次执行子查询时都会引用外部查询中当前行的值。
3.使用子查询的结果来确定外部查询的结果集
where bid in (select top 2 bid from cyndi where aid=a.aid order by cast(bid as int) desc)
order by 3,cast(bid as int) desc