簡體   English   中英

按字母數字字段對MySQL查詢結果進行排序

[英]Sort MySQL query result by a alphanumeric field

我正在使用php查詢數據庫中的表。 字段之一是稱為“ rank”的列,其數據如下:

none
1-bronze
2-silver
3-gold
...
10-ambassador
11-president

我希望能夠根據該“排名”列對結果進行排序。 字段為“ none”的任何結果都將被排除,因此不會考慮在內。您已經猜到了,現在結果又像這樣返回:

1-bronze
10-ambassador
11-president
2-silver
3-gold

當然,我希望對其進行排序,因此如下所示:

1-bronze
2-silver
3-gold
...
10-ambassador
11-president

現在,查詢將作為對象返回。 我已經嘗試過不同的排序選項,例如natsort,sort,array_multisort,但我無法確定它的工作方式。 如果可能,我希望將結果保留為對象形式。 我將數據傳遞給下一步。 不過,將對象傳遞到視圖然后在此處進行工作是完全可以接受的。 所以這畢竟不是問題。 :)

謝謝您的幫助。 我希望我有道理。

獲取數組中的值,然后使用natsort()在PHP中對其進行排序

Natsort

如何使用此功能進行排序。 我假設如果要獲取對象,則應將對象轉換為數組,然后使用此對象

function arraySubSort($array, $subkey, $sort = 'asort') 
{
  foreach($array as $key => $value) 
  {
    $temp[$key] = strtolower($value[$subkey]);
  }

  $sort($temp);
  foreach($temp as $key => $value) 
  {
    $result[] = $array[$key];
  }
  return $result;
}

$data = $your_array;
$field = 'ranks';
arraySubSort($data,$field);

它將使用您分配的字段對數組進行排序。 如果要獲取多個記錄,則最好使用它進行排序。

這將起作用-

SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric

-MySQL中的自然排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM