2012-05-17 108 views
1

我有這樣一個數據表應用ORDER BY:的MySQL:在具有數據類型字段爲varchar

---------------------------- 
id name  cat 
============================ 
1 20.gif  logo 
2 21.gif  logo 
3 22.gif  logo 
4 15.gif  web 
5 16.gif  web 
6 17.gif  web 
7 23.gif  logo 
8 18.gif  web 
9 19.gif  web 

,我想獲取最高(每貓最新插入的記錄)的一些事情,如:

---------------------------- 
id name  cat 
============================ 
7 23.gif  logo 
9 19.gif  web 

爲了這個,我詢問:

SELECT id, name, cat FROM portfolio GROUP BY cat ORDER BY name DESC 

但由於名稱字段是一個字符串,所以我不能申請ORDER BY的名字。

任何想法..?

+0

我的事我不得不在查詢中使用一些REGEXP,但我不知道ho w :( –

+0

你能解釋一下你會期待什麼嗎? – Pritom

+1

你一定在做錯事。 'order by'對所有人都適用。 嘗試尋找其他錯誤 – Addicted

回答

0

是的,我找到了解決辦法:

select id, name, cat from (select * from portfolio ORDER BY id DESC) AS x GROUP BY cat 

我得到的幫助來自Retrieving the last record in each group

由於Stackoverflow從而真正使開發人員的生活方便:)

+0

只是不要驚訝,隱式聚合函數「組中的第一條記錄」在使用「group by」時不能在其他RDBMS中工作... – Aprillion

+0

您不是按名稱排序,而是按ID排序;) –

1
SELECT id, name, cat 
FROM portfolio 
GROUP BY cat 
ORDER BY cast(substring(name, 1, INSTR(name, '.') - 1) as signed) DESC  

SQLFiddle example

+1

'ORDER BY'直到'group by'應用後才執行排序。 –

相關問題