SQL:MySQL中的GROUP BY问题

Rap*_*tor 3 mysql sql select group-by

这是数据库表

???????????????????????????????????????????????
? id ? customer_id ?    last_seen     ? param ?
???????????????????????????????????????????????
?  1 ?       12345 ? 2012-08-01 12:00 ?     1 ?
?  2 ?       22345 ? 2012-08-01 12:00 ?     1 ?
?  3 ?       32345 ? 2012-08-01 12:00 ?     1 ?
?  4 ?       42345 ? 2012-08-01 12:00 ?     1 ?
?  5 ?       52345 ? 2012-08-01 12:00 ?     1 ?
?  6 ?       12345 ? 2012-09-01 12:00 ?     2 ?
?  7 ?       12345 ? 2012-10-01 12:00 ?     3 ?
???????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

idAUTO INCREMENT主键在哪里.

我想要实现的是获得每个记录的最后记录customer_id.预期结果 :

???????????????????????????????????????????????
? id ? customer_id ?    last_seen     ? param ?
???????????????????????????????????????????????
?  2 ?       22345 ? 2012-08-01 12:00 ?     1 ?
?  3 ?       32345 ? 2012-08-01 12:00 ?     1 ?
?  4 ?       42345 ? 2012-08-01 12:00 ?     1 ?
?  5 ?       52345 ? 2012-08-01 12:00 ?     1 ?
?  7 ?       12345 ? 2012-10-01 12:00 ?     3 ?
???????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我试过这个SQL,但它返回错误的结果:

SELECT customer_id, param, last_seen 
FROM `my_table` 
GROUP BY customer_id 
ORDER BY last_seen DESC 
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?

更新:表结构(输出DESC my_table)

+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment |
| customer_id  | varchar(8)   | NO   |     | NULL    |                |
| last_seen    | datetime     | NO   |     | NULL    |                |
| param        | int(11)      | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 7

子查询背后的想法是它分别获取last_seen每个子查询的最新值Customer_ID.然后,子查询的结果将与原始表连接,前提是必须满足条件:CustomerID日期必须相互匹配.

SELECT  a.*
FROM    Customer a
        INNER JOIN
        (
            SELECT Customer_ID, MAX(last_seen) maxDate
            FROM Customer
            GROUP BY Customer_ID
        ) b ON a.Customer_ID = b.Customer_ID AND
                a.last_seen = b.maxDate
ORDER BY a.ID
Run Code Online (Sandbox Code Playgroud)

后续问题:请您检查last_seen记录ID 的值6是否正确?