仅从列中获取最后一条mysql记录

时间:2016-11-02 05:42:12

标签: mysql

这是我现有的表格

 id   name  version
| 1 |  a   | 1.1 |
| 2 |  b   | 2.1 |
| 3 |  c   | 3.1 |
| 4 |  d   | 1.2 |
| 5 |  e   | 4.1 |

如何编写查询以生成结果,其中我将返回所有记录,但只选择列版本中的最后一条记录,如下所示?

 id   name  version
| 4 |  d   | 1.2 |
| 2 |  b   | 2.1 |
| 3 |  c   | 3.1 |
| 5 |  e   | 4.1 |

2 个答案:

答案 0 :(得分:0)

如果您更喜欢稍微费力的解决方案......

SELECT x.*
  FROM t x
  JOIN 
     ( SELECT MAX(grade) grade
         FROM t
        GROUP 
           BY FLOOR(grade)
     ) y
    ON y.grade = x.grade

http://sqlfiddle.com/#!9/f17db1/16

答案 1 :(得分:-1)

这有点费力,但可以做到

SELECT
  SUBSTRING_INDEX(GROUP_CONCAT(id ORDER BY REPLACE(grade,'.','')*1 DESC),',',1) as id,
  SUBSTRING_INDEX(GROUP_CONCAT(letter ORDER BY REPLACE(grade,'.','')*1 DESC),',',1) as letter,
  MAX(grade) as grade
FROM
  t
  GROUP BY SUBSTRING_INDEX(grade,'.',1)
  ORDER BY REPLACE(grade,'.','')*1 

假设最后一列是浮动的,你可以直接使用ORDER BY lastcol

FIDDLE

CREATE TABLE t
    (`id` int, `letter` varchar(7), `grade` varchar(55))
;

INSERT INTO t

VALUES
    (1, 'a', '1.1'),
    (2, 'b', '2.1'),
    (3, 'c', '3.1'),
    (4, 'd', '1.2'),
    (5, 'e', '4.1')