我想从mySQL数据库获得平均值或至少200,000行的总和。这就是我查询数据库的方式,但数量太大,我无法查询,因为我无法承受服务器的重载。
SELECT user_id, total_email FROM email_users
WHERE email_code = 1
LIMIT 200000
SELECT SUM(total_email), AVG(total_email) FROM email_users
WHERE user_id IN
(
01, 02,..., 200000-th user_id
)
我的问题是有一种方法以某种方式将两个查询合并为一个,这样我就可以得到200,000个email_code = 1的email_users的总和或平均值。
编辑:感谢所有回答。我没有意识到答案是如此简单 - 嵌套的select语句。答案 0 :(得分:1)
假设您只想要来自DB的任何200K记录,其中包含这样的内容,其中email_code = 1
SELECT SUM(total_email), AVG(total_email) FROM email_users
WHERE user_id IN
(
SELECT user_id
FROM email_users
WHERE email_code = 1 LIMIT 200000
)
或
SELECT SUM(total_email), AVG(total_email) FROM
(SELECT user_id , total_email
FROM email_users
WHERE email_code = 1 LIMIT 200000)
答案 1 :(得分:1)
您可以使用子查询执行此操作:
SELECT SUM(total_email), AVG(total_email)
from (SELECT eu.*
FROM email_users eu
WHERE eu.email_code = 1
LIMIT 200000
) eu
一些笔记。首先,使用limit
而不使用order by
会产生不确定的结果。您可以(理论上)运行此查询两次并获得不同的结果。其次,假设total_email
中有一个名为email_users
的字段。
答案 2 :(得分:1)
SELECT SUM(total_email), AVG(total_email)
FROM (SELECT total_email
FROM email_users
WHERE email_code = 1
LIMIT 200000) x