2012-02-06 66 views
0

我可以使用單個查詢將列中的值除以查詢中返回的行數嗎?將列中的值除以查詢中返回的行數。它可以在單個查詢中完成嗎?

例如,我從表中選擇基於一些條件的一些數值:

select value from table where ... 

比方說,它返回N行,我想通過行數除以返回的值返回:

select value/N from table where ... 

它可以用幾個查詢來完成(例如,在第一個查詢之後,我查詢行數並再次執行查詢)。但是,是否可以通過一個帶有SQL技巧的查詢在沒有查詢條件重複的情況下完成,以便可能會複雜的實際選擇(WHERE部分)只運行一次?

+0

可能沒有。 MySQL不支持分析函數(COUNT(*)覆蓋所有行)。你將不得不做一個子查詢計數(這會再次在你的表上運行)。 – 2012-02-06 17:16:31

+0

我正在考慮首先將結果選擇到子查詢中的某個臨時表中,然後對其行進行計數並從中選擇結果,但我不知道是否可以在單個查詢中執行此操作 – Tom 2012-02-06 17:23:33

回答

0

你可以做一個單一的查詢,但據我所知,與MySQL必須重複的條件:

select 
value/@cnt from 
table1 
INNER JOIN (select @cnt = count(*) 
FROM table1 WHERE [the same condition as in main query]) ON (1=1) 
WHERE condition 

或者你可以

SELECT value/(SELECT COUNT(*) FROM table1 WHERE ...) 
FROM table1 
WHERE ... 

我相信優化應爲這兩個查詢生成相同的執行計劃。

相關問題