遇到新问题,开贴再求一次SQL查询语句,大家来指导指导。

kekan 2007-05-15 01:32:37
表A与表B,表A内有字段aaa、bbb、ccc,表B内有字段ddd、eee、fff。
要求在A.aaa='123'和B.ddd='456'的两个结果中查询,条件为A.bbb=B.eee,结果列出A.aaa、A.bbb、A.ccc、B.ddd、B.eee、B.fff及重复记录的数目(就是说有几条A.bbb=B.eee的结果)这七项,结果按照重复记录的数目从大往小排列。

答案:SELECT A.aaa,A.bbb,A.ccc,B.ddd,B.eee,B.fff,CNT=COUNT(1)
FROM A INNER JOIN B ON A.bbb=B.eee
WHERE A.aaa='123' and B.ddd='456'
GROUP BY A.aaa,A.bbb,A.ccc,B.ddd,B.eee,B.fff
ORDER BY CNT DESC

其中重复数目CNT是A.bbb=B.eee分别在A和B中记录的乘积,在实际使用中发现这个效果不理想,现在想在查询结果中分别列出A.bbb=B.eee在A和B的记录数,应该怎么样改。
...全文
309 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zfck 2007-07-25
  • 打赏
  • 举报
回复
可以换一个思路,分两步查询,然后在客户端组织显示结果。
不一定非要在一步上吊死啊。
kekan 2007-05-17
  • 打赏
  • 举报
回复
顶顶顶
kekan 2007-05-16
  • 打赏
  • 举报
回复
咋没人知道呢
kekan 2007-05-16
  • 打赏
  • 举报
回复
我的想要的结果应该是
select count(*) from a where aaa='123' and bbb in (select eee from b where ddd='456')
group by bbb order by count(*) desc 记为C

select count(*) from b where ddd='456' and eee in (select bbb from a where aaa='123') group by eee order by count(*) desc 记为D

但我现在就是想把这两个结果合并到我原先的查询语句中去,只用一条语句就查询出A.aaa,A.bbb,A.ccc,结果C,B.ddd,B.eee,B.fff,结果D,CNT=COUNT(1)这个格式的数据来。
fangzhouyu 2007-05-16
  • 打赏
  • 举报
回复
select count(*) from b where ddd='456' and eee in (select bbb from a where aaa='123')

字段错误
fangzhouyu 2007-05-16
  • 打赏
  • 举报
回复
select count(*) from a where aaa='123' and bbb in (select eee from b where ddd='456')

select count(*) from b where aaa='456' and ddd in (select bbb from a where aaa='123')

看的有点不明白,不知道是不是要这样的结果
kekan 2007-05-16
  • 打赏
  • 举报
回复
继续顶
kekan 2007-05-15
  • 打赏
  • 举报
回复
小顶下
hbqc_zh 2007-05-15
  • 打赏
  • 举报
回复
用geoup by '' having ''

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧