2015-10-19 127 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)'可能有幫助。 –