2016-11-21 47 views
-1

我的數據庫表字段內含價值數據的陣列我需要排序僅在第一值如何使用PHP MySQL查詢排序數組值

Pid | Price 
    1 | 213,4566,112 
    2 | 100,452,567 
    3 | 653,344,6322 
    4 | 55,222,42,44 
    5 | 522 

我希望它在升價第一個值進行排序像下面的順序

Pid | Price  
    4 | 55,222,42,44 
    2 | 100,452,567 
    1 | 213,4566,112 
    5 | 522 
    3 | 653,344,6322 

我需要一個使用PHP的Mysql查詢。

+6

您不應該將逗號分隔數據存儲到類似的字段中。您應該使用單獨的表來存儲價格,每個價格一行(因此,如果您查看該表中的pid,則會返回多行)。 –

回答

2

您可以使用使用SUBSTRING_INDEX以下查詢:

SELECT * FROM table 
ORDER BY CAST(SUBSTRING_INDEX(Price, ',', 1) AS SIGNED) ASC 

演示:http://sqlfiddle.com/#!9/3f7b7/2

提示:你應該避免像Price用逗號分隔值的列。
規範你的數據庫/表!

+0

(+0),但規範化是正確的路要走 – Strawberry

+0

我想你可能實際上想要使用CAST(SUBSTRING_INDEX(Price,',',1)AS SIGNED)',所以它們被分類爲數字而不是字符串。否則'100'(Pid 2)可能是第一個。 –

+0

@RocketHazmat - 沒錯!更新並添加演示 –