2013-02-14 141 views
0

我有一個3列的表:Animal,key,owner。示例MYSQL多個查詢或單個查詢 - 哪個更有效率

Cat  1  Bob 
Bird 2  Bob 
dog  3  Bob 
dog  4  Andy 
Lizard 5  Andy 
Bird 6  Andy 
Cat  7  Andy 

和每個動物的一個相關表(列鍵,重量)。例如,表CAT_WEIGHT:

1 12 
7 17 

我想找到MinMaxAverageTotalCount每個動物類型,但只針對特定的所有者。

這是可以使用單個MYSQL查詢來計算這些嗎?我知道我可以在多個查詢中做到這一點,但我正在尋找最佳方法。

謝謝

+0

請注意:一或更多的答案可能不再適用於這個問題,因爲它已被編輯爲與原始問題完全不同。 – bernie 2013-02-15 00:06:48

回答

3

是的,只用一個查詢就可以做到這一點。

所有其他的事情都是平等的,你想盡可能少地使用查詢。往數據庫的往返行程通常是在程序中遇到的一些更昂貴的事情。

select 
    animal, 
    min(weight) min_weight, 
    max(weight) max_weight, 
    avg(weight) avg_weight, 
    sum(weight) tot_weight, 
    count(weight) cnt_weight 
from 
    your_table 
group by 
    animal 
order by animal; 
+0

我覺得這很接近。我意識到重量是在另一個表(見修訂後的questoin)。在單個查詢中仍然有可能嗎? – TSG 2013-02-14 23:46:46

+0

修改與原始問題顯着不同的問題不一定非常經常進行。你不妨打開一個單獨的問題。或者,也許有人會過來回答現在的問題。 – bernie 2013-02-15 00:07:23

+0

你說得對 - 我會提出一個新問題。謝謝 – TSG 2013-02-15 00:35:03

0

如何:

從animals_table組選擇分鐘(重量),MAX(重量),和(重量),COUNT(*)的動物

+0

這將使用NULL權重對行進行計數。 – bernie 2013-02-14 23:24:59

+0

Ooopsie。編輯。 – ethrbunny 2013-02-15 00:20:16