1

次のようなdbテーブルがあります。

----------------------------
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を適用できません。

何か案が..?

4

2 に答える 2

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

SQLFiddle の例

于 2012-05-17T05:46:09.557 に答える
0

はい私は解決策を見つけました:

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

各グループの最後のレコードを取得することで助けを得ました

本当に開発者の生活を楽にするStackoverflowに感謝します:)

于 2012-05-17T05:53:20.443 に答える