比如有两个表,第一个m表:
mID,name,pid
1, xxx , 0
2, xxx, 1
3, xxx, 2
4, xxx, 3
第二个i表:
id, mId,money
1, 1, 100,
2, 2, 500
3, 1, 1000
4, 4, 600现在假设两个表都是上百万的数据;
需要查询:指定一个mId,查询跟mid有关联的所有的m表的数据,根据pid; 比如给定一个mid=1,那么就要查询出mId=1,2,3,4的数据; 同时,需要查询出mid对应的money的sum;比如:查询mID=1的,那么就会出现如下的数据:
mID moneySum
1 1100
2 500
3 0
4 600
自己写了一个,但是查询比较慢。 所以想问问各位,有没有类似的列子,或提供个思路;有sql更好了。谢谢了。
mID,name,pid
1, xxx , 0
2, xxx, 1
3, xxx, 2
4, xxx, 3
第二个i表:
id, mId,money
1, 1, 100,
2, 2, 500
3, 1, 1000
4, 4, 600现在假设两个表都是上百万的数据;
需要查询:指定一个mId,查询跟mid有关联的所有的m表的数据,根据pid; 比如给定一个mid=1,那么就要查询出mId=1,2,3,4的数据; 同时,需要查询出mid对应的money的sum;比如:查询mID=1的,那么就会出现如下的数据:
mID moneySum
1 1100
2 500
3 0
4 600
自己写了一个,但是查询比较慢。 所以想问问各位,有没有类似的列子,或提供个思路;有sql更好了。谢谢了。
解决方案 »
- Out of range value for column 'tel' at row 1
- 求,mysql里有类似mssql里的sp_makewebtask吗?
- mysql C API不支持SQL语句中的IN运算符吗?
- 我刚装了mysql 可是在测试MySQL工作是否正常的时候遇到了问题 我知道这不属于这个版块 可是我现在很急啊 这个版块人气又很旺
- 一个小疑惑,请帮忙解答,谢谢
- mysql数据库损坏了,建表时只有.frm文件能否恢复数据库。
- 如何在java中导出mysql数据库
- MySQL 4.1.1 alpha 发布
- 关于replace的问题
- 一个SQL语句的处理,急。
- vs用C#连接MySQL数据库问题
- mysql能不能调用web service
DECLARE sTemp VARCHAR(1000);
DECLARE sTempChd VARCHAR(1000);
-- 关联的所有金额
DECLARE orderSumMoney VARCHAR(100);
SET sTemp = memberIdStart;
SET sTempChd =cast(memberIdStart as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(memberId) INTO sTempChd FROM member where FIND_IN_SET(recommendedPerson,sTempChd)>0;
END WHILE;
-- 查询所有关联的人所消费的金额
select SUM(orderMoney) into orderSumMoney from orderinfo where memberId in(sTemp);
RETURN orderSumMoney;
END
加了索引也是慢。这种递归的查询,估计也快不起来了。