sql语句查询排序问题

表A中有ID名字1哈哈2呵呵3喵表B中有绑定ID内容2XX2XX2XX1XX1XX我要按照表B中出现的频率来排序就是顺序为呵呵-哈哈-喵(注意B表中不存在的喵在排序中也要... 表A中有
ID 名字
1 哈哈
2 呵呵
3 喵
表B中有
绑定ID 内容
2 XX
2 XX
2 XX
1 XX
1 XX

我要按照表B中出现的频率来排序 就是顺序为 呵呵-哈哈-喵 (注意B表中不存在的喵在排序中也要!)怎么写?先谢过了!
展开
 我来答
jelvis
2014-09-04 · TA获得超过5631个赞
知道大有可为答主
回答量:2480
采纳率:62%
帮助的人:823万
展开全部
create table a
(id int,name varchar(20))
go
create table b
( bid int,nr varchar(20))
go
insert into a select 1,'哈哈' Union all
select 2,'呵呵' Union all
select 3,'喵'
insert into b select 2,'q' Union all
select 2,'w' Union all
select 2,'e' Union all
select 1,'r' Union all
select 1,'u' 

select id,name,isnull((select COUNT(1) from b where bid=a.id),0) from a order by 3 desc

freeeeeewind
2014-09-04 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1329万
展开全部
SELECT 
     A.名字
FROM
     A LEFT JOIN ( 
            SELECT 
                    Count(B.绑定ID) AS Cnt, B.绑定ID
            FROM 
                    B  
           GROUP BY B.绑定ID 
           ORDER BY Count(B.绑定ID) DESC
    ) AS qry
   ON A.ID = qry.绑定ID
   ORDER BY qry.Cnt DESC;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tctcdtc2008
2014-09-04 · 超过30用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:64.9万
展开全部
SELECT A.A_ID, A.A_NAME, NVL(T.B_COUNT,0) FREQUENCY
 FROM A,
          (SELECT B_ID, COUNT(*) B_COUNT FROM B GROUP BY B_ID ) T
WHERE A.A_ID = T.B_ID(+)
ORDER BY FREQUENCY DESC

如果用的是ORACLE数据库 这样应该就差不多 你把列名改了试一下

如果不是ORACLE 再追问


标准的写法

SELECT A.A_ID, A.A_NAME, NVL(COUNT(B.B_ID), 0) FREQUENCY
  FROM A LEFT JOIN B ON A.A_ID = B.B_ID
 GROUP BY A.A_ID, A.A_NAME
 ORDER BY FREQUENCY DESC
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
beautytrap
2014-09-04 · 超过22用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:44.4万
展开全部
create table table_a(
id number,
name varchar2(10)
);
create table table_b(
id number,
content varchar2(10)
);
insert into table_a values(1,'哈哈');
insert into table_a values(2,'呵呵');
insert into table_a values(3,'喵');
insert into table_b values(2,'呵呵');
insert into table_b values(2,'呵呵');
insert into table_b values(2,'呵呵');
insert into table_b values(1,'哈哈');
insert into table_b values(1,'哈哈');
commit;
select a.*, nvl(t.count, 0) x
  from (select b.id, count(b.id) count
          from table_b b, table_a a
         where a.id = b.id(+)
         group by b.id) t,
       table_a a
 where a.id = t.id(+)
 order by x desc;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清脆且清亮的小福祉3220
2014-09-04 · TA获得超过232个赞
知道答主
回答量:171
采纳率:0%
帮助的人:138万
展开全部
Like是用*号的吗?用习惯了mysql。。是用%的。呵呵
你的少了个and啦。
select top 5 c_name,c_stu from class where like c_name='%百度%' AND c_stu>30 and c_type=true order by c_stu asc,c_type desc
请采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式