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

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:19:04
表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

就是说:你要是懂得了表达式和子查询同样可以作为排序使用,以后许多问题你就会迎刃而解了

查询 表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

希望有所帮助

你都没说是什么数据库系统……假设是MySQL好了……

SELECT COUNT(b.*) AS 该用户总购买数, a.姓名 FROM 表B b LEFT JOIN 表A a ON (a.ID = b.用户表ID) ORDER BY 该用户总购买数 DESC

得到的结果类似:
总数 | 姓名
20 | 张三
15 | 李四
2 | 王五

不知道是不是你要的结果?

先根据ID查询购买的产品数即行数(hangshu)
select ID,count(*) as hangshu into