求一条sql语句,查询2个表,根据其中一个表的数据行数进行排序的问题

表A
-------------------
字段

ID 姓名
-------------------

表B
-------------------
字段

ID 购买产品名称
-------------------

表A 是用户表,用来存放用户的数据 (1对1)
表B 是存放用户购买产品的数据 (1对多)

用户每够买一个产品,产品表就会多存储一行数据

求一条SQL语句

查询 表A.ID 按照 表B里面的改用户购买的产品的数据行数 进行排序

请写出具体的SQL语句

谢谢
补充:

表A
-------------------
字段

ID 姓名
-------------------

表B
-------------------
字段

ID 购买产品名称 用户表ID(存储的是A表.ID)
-------------------

select * from 表A ORDER BY (SELECT COUNT(1) FROM 表B WHERE 表B.ID=表A.ID)

WHITE_WIN

语法错误....

那就改一下关联字段就行了
select * from 表A ORDER BY (SELECT COUNT(1) FROM 表B WHERE 用户表ID=表A.ID)
另外,您还可以把行数在查询中显示出来,并按照行数从多到少的顺序排列:
select *,
(SELECT COUNT(1) FROM 表B WHERE 用户表ID=表A.ID) as 行数
from 表A
ORDER BY (SELECT COUNT(1) FROM 表B WHERE 用户表ID=表A.ID) desc

就是说:你要是懂得了表达式和子查询同样可以作为排序使用,以后许多问题你就会迎刃而解了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-17
先根据ID查询购买的产品数即行数(hangshu)
select ID,count(*) as hangshu into #1 from 表B group by ID desc

在根据行数排序查询对应的ID购买的商品记录
select 表A.ID,表B.购买产品名称 from #1,表B where #1.ID = 表B.ID order by hangshu desc
第2个回答  2008-10-12
这个问题不难,需要利用到对查询的结果字段使用别名,具体的SQL语句如下:
select 表A.ID,表A.姓名,(SELECT COUNT(1) FROM 表B WHERE 表B.用户表ID=表A.ID) as 购买数量 from 表A ORDER BY 购买数量
呵呵,希望解决了问题,^_^
第3个回答  2008-10-11
select * from 表A ORDER BY (SELECT COUNT(1) FROM 表B WHERE 表B.ID=表A.ID)
这个在SQLserver 2000中对的,这就是相关子查询的用法。
不知道提问者用的是什么数据库
第4个回答  2008-10-21
查询 表A.ID 按照 表B里面的改用户购买的产品的数据行数 进行排序

按照你的说法,就是想得到 购买产品的 A.ID 的排序.

表B
-------------------
字段
ID 购买产品名称 用户表ID(存储的是A表.ID) 很显然 购物清单表里有A.ID

select B.用户表ID
from (
select 用户表ID, Cout(购买产品名称) as ID
from B
group by 用户表ID ) as B
order by B.ID

希望有所帮助
相似回答