MySQL:在数据类型为 varchar 的字段上应用 ORDER BY

标签 mysql

我有一个像这样的数据库表:

----------------------------
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。

有什么想法吗?

最佳答案

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

SQLFiddle example

关于MySQL:在数据类型为 varchar 的字段上应用 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10630342/

相关文章:

php - 警告 : phpmyadmin max_input_vars error

MySQL 左加入多个 View

php - 自动填充动态生成的表单

mysql - 主键对在两种方式上都是唯一的

mysql - 如果相同的查询,则不会计算 MariaDB 性能架构摘要

php - MySQL 授予所有权限不允许在 Google CloudSQL 上创建用户

mysql - 在 mysql 中,如何只从一个表中获取不链接到具有特定 ID 的另一个表中的任何行的行

mysql - 将 m2m 更改为 char 时 Django South 迁移失败

MySQL NDB Cluster 存储过程

mysql - 如何将带有 md5 列的 csv 导入到 mysql