2011-09-07 77 views
-3

我的MySQL知識是基礎知識。我想建立一個查詢來返回給定值的所有行,按升序排列。我無法弄清楚我該怎麼做。使用sum()只返回一行。我試過一個子查詢,但它返回所有行。我不想讓任何人做我的工作,我只是想讓你幫我解決這個問題。 有人有想法嗎?返回行,其中字段小於給定值的總和

如何檢索其提交的 「價值」 和30 實例的所有行:

given value: 30 
field to sum: value 


table: 
id name  value order 
1 name1  3  1 
2 name2  10  6 
3 name3  13  3 
4 name4  5  8 
5 name5  20  25 

因此,查詢必須返回: ID 1,ID 3,ID 2,ID 4

提前致謝。

+0

問題是什麼? –

+0

這是密碼嗎? – Johan

+1

列出的行不加起來爲30(結果爲31)。正確的行(可能) - 2,5.如果有多種方法可以得到結果,會發生什麼? –

回答

0

使用postgres作爲數據庫,我認爲這是做你想做的。我不知道它是否工作在MySQL類似:

CREATE TABLE test (
id int, 
name varchar(50), 
value int, 
order_ int 
); 

INSERT INTO test values (1, 'name1',  3, 1); 
INSERT INTO test values (3, 'name3',  13, 3); 
INSERT INTO test values (2, 'name2',  10, 6); 
INSERT INTO test values (4, 'name4',  5, 8); 
INSERT INTO test values (5, 'name5',  20, 25); 

SELECT * FROM (SELECT *, SUM(value) OVER (ORDER BY order_) sumvalues FROM TEST) a WHERE sumvalues <30 
3
set @total:=0; 
select id, name, value, `order` 
from 
(select 
id, name, value, `order`, 
@total:=if(@total is null, 0, @total)+`order` as total 
from THE_TABLE 
order by `order` 
) as derived 
where total<=30; 
相關問題