2016-02-09 35 views
0

我有一些問題,與此查詢,找到最大ITEM_COST到這個表如何找到逗號separeted值和ID的最大值爲表

OrderID  | item_ids| item_cost 
    --------------------------------------------------------- 
    1    1,2,3  22,88,77 
    2    2,4  83,26 

我覺得這個功能

SELECT * FROM scb.invoice_out 
where FIND_IN_SET('2',item_ids) 

但答案是完整的行,我只需要最大(item_cost)的單個項目

OrderID  | item_ids| item_cost 
--------------------------------------------------------- 
1    1,2,3  22,88,77 
2    2,4  83,26 

有人與同樣的問題 ?

+0

我不太明白,你要選擇的行,即在列ITEM_COST分離的一個值是所有行的最大價值? – sagi

+0

如果id是2 MAX(item_cost)是88 – VladimirEncina

+0

一旦你回到了行,你應該用PHP來處理它以獲得最高值,這將保持SQL簡單並且不會超過它應該做的(從數據庫中獲取數據)和PHP將做它應該做的! – FMashiro

回答

0

您的問題MySQL的解決辦法是

select 
    max(SUBSTRING_INDEX(SUBSTRING_INDEX(`item_cost`, ',', numbers.n), ',', -1)) as max_id 
from 
    (select 1 n union all 
    select 2 union all select 3 union all 
    select 4 union all select 5) numbers INNER JOIN invoice_out 
    on CHAR_LENGTH(`item_cost`) 
    -CHAR_LENGTH(REPLACE(`item_cost`, ',', ''))>=numbers.n-1 
where 
    FIND_IN_SET('2',item_ids) 
order by 
    OrderID, n 
+0

! – VladimirEncina

+0

@VladimirEncina如果這回答你的問號,它作爲答案:) –

+0

我是新的,所以我沒有聲望:( – VladimirEncina

相關問題