永发信息网

mysql 两个表 比较复杂的计算。

答案:4  悬赏:30  手机版
解决时间 2021-01-03 00:00
  • 提问者网友:轻浮
  • 2021-01-02 07:41
两个表

a.表
字段 aid aneirong ccid ddid
1 西瓜 3254 32
2 苹果 2412 32
3 黄瓜 2769 44
4 青菜 2412 32

...........
b.表
字段 bid bneirong ccid
1 西瓜 3241
2 苹果 2412
3 黄瓜 8974

根据两个表

要得到,a表.ddid = 32 时 对应的ccid在b表里面出现了几次

就上面的举例 可以看出结果是 count(*) as 等于1 只有一个2412

数据量比较大 求sql语句
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-01-02 08:43
楼主不是只要示数量就可以吗,楼上的写的我表示不理解,下面的语句应该可以满足
SELECt COUNT(DISTINCT b.bid ) FROM a INNER JOIN b ON a.ccid=b.ccid WHERe a.ddid=32
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-01-02 12:04
你可以先查询B表中每个Bneirong出现的次数,在关联查询 select t1.ddid,t1.aneirong ,t2.次数 from A t1, (select bneirong,count(*) as 次数 from b group by bneirong) t2 where t1.aneirong=t2.bneirong
  • 2楼网友:一秋
  • 2021-01-02 10:32
select a.uname as aname, b.uname as bname from a full outer join b on a.uid = b.uid where a.uid is null or b.uid is null 注意: 1. 用 a.uid<>b.uid 做条件是错的,会得到大量的垃圾数据。 2. 这个查询不需要很多内存,只有数据库能正常运行,这个查询应该很快。 3. 这个查询应该用 outer join (最多6万) 而不是 cross join (9亿)
  • 3楼网友:刀戟声无边
  • 2021-01-02 09:00
一楼连接的字段只有一个,我觉得不保险,改为: select aneirong,cout(*) as 次数 from a left join ( select ccid,count(*) as cs from b group by bneirong,ccid ) t on a.ccid=t.ccid and a.aneirong=t.bneirong where a.ddid=32 group by aneirong 不知道这是不是你想要的结果,你要求的内容太简短了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯