两个表
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语句
mysql 两个表 比较复杂的计算。
答案:4 悬赏:30 手机版
解决时间 2021-01-03 00:00
- 提问者网友:轻浮
- 2021-01-02 07:41
最佳答案
- 五星知识达人网友:鸽屿
- 2021-01-02 08:43
楼主不是只要示数量就可以吗,楼上的写的我表示不理解,下面的语句应该可以满足
SELECt COUNT(DISTINCT b.bid ) FROM a INNER JOIN b ON a.ccid=b.ccid WHERe a.ddid=32
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
不知道这是不是你想要的结果,你要求的内容太简短了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯