2015-08-18 16 views
0

我有一個Yii模型,用於返回以下sql查詢。查詢正確排序使用DISTINCT的年份

SELECT DISTINCT t.year_id 
FROM 
`myuser` `t` 
INNER JOIN organisation o ON (t.organisation_id = o.organisation_id) 
WHERE o.organisation_id = 12345 
ORDER BY t.year_id ASC 

這將返回以下:

year_id 
    10 
    15 
    2 
    7 
    9 

如何改變這種做法,它會顯示這個順序2,7,9,10,15呢?注 - 行是一個VARCHAR數據類型,因爲它確實有一些字符串如幼兒園,接待等。

+4

'ORDER BY轉換(t.year_id,十進制)'假設一年爲varchar – Mihai

+0

什麼是year_id場的DB中的格式?如果它不是一個數字格式,而是一個文本格式,那麼你會得到這個作爲升序的升序。該命令將由字符char和1來之前2.數字字段將瞭解10是大於2 –

+1

但爲什麼varchar ???使用整數,問題消失了! – jarlh

回答

0

只需將其轉換爲數字,爲VARCHAR它是有序的辭書

ORDER BY convert(t.year_id, decimal) 
0

您可以使用此

ORDER BY CONVERT(t.year_id,UNSIGNED INTEGER) ASC