2015-10-19 157 views
-1

我想选择使用下面的查询条件乘法:SQL - 选择多重条件

SELECT (SELECT count(*) 
     FROM users 
    ) 
     as totalusers, 
     (SELECT sum(cashedout) 
      FROM users 
     ) AS cashedout, 
     (SELECT COUNT(*) 
      FROM xeon_users_rented 
     ) AS totalbots, 
(SELECT sum(value) 
      FROM xeon_stats_clicks 
WHERE typ='3' OR typ='1' 
     ) AS totalclicks 

上面的查询只需要下一个第二(0.912确切)来执行。这会使成千上万的请求减慢很多。

什么似乎是合乎逻辑对我来说是这样的方法:

SELECT (SELECT count(*), sum(cashedout) 
     FROM users 
    ) 
     as totalusers, cashedout, 
     (SELECT COUNT(*) 
      FROM xeon_users_rented 
     ) AS totalbots, 
(SELECT sum(value) 
      FROM xeon_stats_clicks 
WHERE typ='3' OR typ='1' 
     ) AS totalclicks 

但是不工作,我得到了以下错误:

#1241 - Operand should contain 1 column(s) 

此外,我怎么能加入其他两个我的第一个查询中的表“xeon_users_rented”和“xeon_stats_clicks”?

+0

发表您的数据库架构,原始数据的样本和预期的结果 – Alex

回答

0

这很慢,因为您有多个子查询。尝试使用连接代替。

此外,您的表格,列的列表将帮助我们更好地协助您。

0

你的第二个查询使用错误的语法,应该是

SELECT 
count(*) as totalusers, 
sum(cashedout) cashedout, 
(SELECT COUNT(*) FROM xeon_users_rented) AS totalbots, 
(SELECT sum(value) FROM xeon_stats_clicks 
WHERE typ='3' OR typ='1') AS totalclicks 
FROM users 
+0

快很多!但是,我收到一条消息,说任何列上都没有索引。我应该添加一个吗?更重要的是,当我使用“SELECT ... AS”时,如何添加索引 – oliverbj

+0

'INDEX(typ,value)'可能有帮助。 –