2014-04-27 41 views
0

我有一個WordPress數據元值排序的查詢,但是,查詢的結果是有點不順序。WordPress數字元訂購無序

下面是該查詢:

<?php query_posts('post_type=rushmoor&meta_key=subaru_driver_best_lap&orderby=meta_value_num&order=asc');?> 

查詢的結果可以在這裏看到:

http://www.subarurallyexperience.co.uk/rushmoor/ranking/

這主要是爲了,但也有一些情況下,它的出例如第一名和第二名目前正在倒退(02.03.44應在02.03.66之前)。

我曾嘗試重新編寫查詢處理這個問題的一些不同的方法,但我一直沒有任何運氣。

我老實說,甚至沒有確定爲什麼這些都沒有秩序。

任何人都可以對此有所瞭解嗎?

回答

2

我懷疑這是因爲您使用meta_value_num作爲您的orderby。 MySQL會嘗試將數值解析爲數字,最多可達02.03,然後找到第二個小數點,此時它將放棄。所以02.03.44和02.03.66的順序是任意的 - 它只是比較2.03和2.03。

如果數據庫中的所有值都是xx.xx.xx格式,則應該正確使用meta_value來排序。如果(例如)您存儲一次爲44年3月2日,另一爲66年2月3日,在這種情況下,阿爾法排序將在2

編輯之前把0你只要問題

只是爲了確認上述內容,the WordPress source顯示meta_value_num將元值加0以將其視爲數值。在MySQL中有以下查詢:

select '02.03.44' + 0, '02.03.66' + 0 from dual 

對於兩者都返回2.03。