求一条sql语句,查询2个表,根据其中一个表的数据行数进行排序的问题
表A-------------------字段ID姓名-------------------表B-------------------字段ID购买产品名称--------...
表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
语法错误.... 展开
-------------------
字段
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
语法错误.... 展开
11个回答
展开全部
那就改一下关联字段就行了
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
就是说:你要是懂得了表达式和子查询同样可以作为排序使用,以后许多问题你就会迎刃而解了
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
就是说:你要是懂得了表达式和子查询同样可以作为排序使用,以后许多问题你就会迎刃而解了
展开全部
先根据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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个问题不难,需要利用到对查询的结果字段使用别名,具体的SQL语句如下:
select 表A.ID,表A.姓名,(SELECT COUNT(1) FROM 表B WHERE 表B.用户表ID=表A.ID) as 购买数量 from 表A ORDER BY 购买数量
呵呵,希望解决了问题,^_^
select 表A.ID,表A.姓名,(SELECT COUNT(1) FROM 表B WHERE 表B.用户表ID=表A.ID) as 购买数量 from 表A ORDER BY 购买数量
呵呵,希望解决了问题,^_^
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select * from 表A ORDER BY (SELECT COUNT(1) FROM 表B WHERE 表B.ID=表A.ID)
这个在SQLserver 2000中对的,这就是相关子查询的用法。
不知道提问者用的是什么数据库
这个在SQLserver 2000中对的,这就是相关子查询的用法。
不知道提问者用的是什么数据库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
查询 表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
希望有所帮助
按照你的说法,就是想得到 购买产品的 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
希望有所帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询