3
#table stock
+-------+----------+
| id | stock |
+-------+----------+
| 1 | 20 |
+-------+----------+
| 2 | 25 |
+-------+----------+
| 3 | 10 |
+-------+----------+
| 4 | 20 |
+-------+----------+
#note: this is an arbitrary random data
我怎能選擇行從表中,直到料柱的sum()
達到一定值或高一點和表是ORDER BY id ASC
。
比如我想從表中選擇行,直到我的股票「50」總和,那麼結果將是
#result 3 rows
+-------+----------+
| id | stock |
+-------+----------+
| 1 | 20 |
+-------+----------+
| 2 | 25 |
+-------+----------+
| 3 | 10 |
+-------+----------+
股票的總和,現在是「55」,這是最接近可能高於'50'的價值,如果我們採取下一行id:4
股票的總和將高於50,並且如果我們刪除行id:3
該值將是45,這比我想要的股票50更少。
我可以通過選擇所有行並循環扔它們來實現這一點,但我想這將是一種浪費。 有沒有一種可能的方法在較低級別上執行該操作,並讓mysql通過sql
查詢爲我執行該操作?
謝謝你,原諒我,如果我搞砸的東西,我是新來的編程
非常感謝您的時間先生。順便說一句,你的名字給了我一種*「沒有想到,那就是我正在嘗試做的事情」的感覺* –
我很抱歉再次打擾你,但是我得到一個語法錯誤*「錯誤代碼:1064.你有一個錯誤在您的SQL語法;檢查對應於您的MariaDB服務器版本的手冊,以在第6行使用正確語法''t 其中cume_stock <50或(cume_stock> = 50且cume_stock - 庫存<50)'\t 0.000 sec「* –
我從t交叉聯接(選擇@sum:= 0)params order by id」'將子查詢的訂單子句移動到子句之前,並且語法錯誤消失。這是否會給我同樣的正確結果? –